- Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 11 anos, 4 meses atrás por
rman.
-
AutorPosts
-
23 de julho de 2014 às 6:31 am #106769
Felipe da Rosa
ParticipanteOla pessoal.
Estou usando uma abordagem com uso de chave artificial (surrogate key) no meu sistema.
Tenho o cenário:
Tabela escola: id e nome
Tabela curso: id e nomeGostaria de criar uma outra tabela para vincular quais cursos fazem parte da escola.
Eu poderia usar uma chave primaria composta com id da escola e id do curso.Mas TB posso criar um id pra ser a PK da tabela e criar os campos id da escola e do curso fora da PK.
Qual seria a melhor opção? Sendo q estou evitando usar chaves compostas.
23 de julho de 2014 às 7:02 am #106770Fábio Prado
ParticipanteFelipe,
Há muitas coisas a serem analisadas p/ decidir entre chave natural ou artificial/substituta. A maior parte dos desenvolvedores preferem a chave artificial para otimizar joins e criar uma padronização nas PKs. Eu prefiro não ser radical e analisar todas as variantes para decidir entre um e outro.
Para este caso, me parece q nova tabela é de relacionamento N para N, então eu acho q é melhor criar uma PK composta natural, pois vc irá sempre usar as colunas da PK p/ fazer join. Com a PK natural evita-se criar uma coluna a mais e vc terá menos dados na tabela!
[]s
23 de julho de 2014 às 8:16 pm #106772Felipe da Rosa
ParticipanteCerto, partindo do pressuposto que eu tenho uma chave natural, depois se eu quiser substituir um curso por outro. Vou precisar alterar os dados da PK. E isso não é uma boa pratica certo?
Outra coisa, no caso de usar a chave substituta para uma tabela matriculas, dependendo do volume de dados ela não pode um dia se acabar? Tipo estourar o tamanho do id no banco?
23 de julho de 2014 às 10:31 pm #106773Fábio Prado
ParticipanteSe for necessário substituir pq isso seria uma prática ruim?
Acabar valores na chave substituta? Depende. Como vc irá criar ela?
25 de julho de 2014 às 2:12 am #106775Felipe da Rosa
ParticipanteNa empresa onde trabalho é meio que um “consenso”, de que não é uma boa pratica alterar valores da chave primária, o que você acha disso?
Sobre acabar os valores da chave, vamos supor que eu tenho um banco unico para todos
os meus clientes. e os clientes vão cadastrando suas matriculas.Esta tabela de matriculas teria um campo ID NUMBER(38,0) (??? não sei se isto esta correto). Não poderia chegar um momento que o campo iria estourar e o id nao ser mais incrementado?
25 de julho de 2014 às 11:52 pm #106783rman
Participante@Felipe da Rosa
Creio que você pode descartar essa preocupação de atingir 38 digitos de matricula, provavelmente o sistema vai entrar em desuso antes disso. :woohoo:
-
AutorPosts
- Você deve fazer login para responder a este tópico.