Como posso criar uma relação obrigatória e não identificadora entre duas entidades?

3

Estou trabalhando no MS Visio 2010. Esta é a parte relevante do meu ERD:

ArelaçãoentreEventoeAventuraestácorreta:háumachaveestrangeiradeEventoparaAventuraeesseFKfazpartedachaveprimáriadoEvento.

Noentanto,oquenãoconsigodescobrirécomofazercomquealinhaderelacionamentodeAdventureparaAccomodationTypesejaamesmadeEventtoAdventure,semfazerdesserelacionamentopartedaPKdeaventura.Quandoolhoparaaspropriedades'Miscelânea'dessalinhaderelacionamento,queroqueseja:

  • Cardinalidade:Zerooumais
  • Tipoderelacionamento:Nãoidentificável
  • Ofilhotempai:Nãoéopcional(obrigatório)

MasacaixadeseleçãodaterceirapropriedadeestáemcinzaealternaentreVerdadeiro/FalsoquandoeufaçoarelaçãoNãoidentificando/Identificando.

Aúnicamaneiraqueconseguidescobrirfoidesconectarasduascolunas,daguia"Definição", que então desabilita a caixa de seleção "Opcional", mas depois perco a propriedade de chave estrangeira na coluna accomType e, enquanto os símbolos de relacionamento estão corretos, a linha permanece pontilhada.

Como posso fazer com que a cardinalidade da linha à esquerda apareça igual à linha de relacionamento à direita, sem adicionar accomType ao PK de Adventure?

    
por Cam Jackson 17.05.2012 / 06:57

2 respostas

1

Este thread MS TechNet identifica o problema como tendo a ver com a maneira que o Visio 2010 insere automaticamente a chave externa quando você cria um relacionamento entre entidades:

It indeed seems that typing the foreign key field name first and then establishing the relationship makes this possible. Checking/unchecking Req'd on the foreign key then automatically checks/unchecks Optional on the relationship.

Existem duas maneiras de resolver esse problema, dependendo de você estar criando um novo relacionamento no diagrama ou tentando corrigir um existente.

Como criar um relacionamento obrigatório e não identificador

Antes de criar o relacionamento, adicione o (s) atributo (s) FK desejado (s) à entidade filha, usando o (s) mesmo (s) nome (s) do PK da entidade pai. Certifique-se de que a opção "Req'd" esteja marcada para cada atributo FK.

No seu exemplo, adicionamos um atributo "name" à entidade Adventure:

Agora,adicionarorelacionamentocriaautomaticamenteoFK,maspreservaoestadonão-identificadorenãoopcionaldoatributoexistentenoAdventure:

VocêestálivrepararenomearoatributoFKcomoquisernestemomento.

Observequeacaixadeseleção"Child has parent: Optional" ainda está esmaecida. Mesmo depois desse ponto, alterar as propriedades do relacionamento e / ou os atributos envolvidos algumas vezes tem efeitos colaterais indesejados, e você pode achar o símbolo errado do pé de galinha ficando "preso" novamente. Felizmente, há uma maneira mais rápida de corrigir isso do que excluir o relacionamento e começar de novo.

Como corrigir uma relação existente

Selecione o relacionamento com o símbolo do pé de galinha "preso" e vá para a guia Definição na janela Propriedades do banco de dados.

Você verá uma linha com setas conectando os atributos PK e FK nas entidades pai e filha. Selecione os atributos conectados nas duas tabelas e desconecte-os clicando no botão na coluna do meio. Se a chave for composta, você verá vários pares de atributos:

Depoisdedesconectartodososatributosenvolvidosnorelacionamento,acaixa"Filho tem pai: opcional" na guia Diversos ficará ativa novamente. Defina as propriedades do relacionamento como Não identificador com pai opcional, verifique se os atributos FK na entidade filha estão definidos como "Req'd" e, em seguida, volte para a guia Definição e associe novamente os atributos PK e FK :

    
por 17.03.2016 / 17:12
-1

O Visio adiciona automaticamente a coluna de chave estrangeira ao criar um novo relacionamento. Para alterar a obrigatoriedade do relacionamento, basta definir o atributo obrigatório desta coluna (em propriedades de entidade, colunas de tabulação).

    
por 09.08.2012 / 22:35