Duvida Relacionamento de Tabelas

3 respostas
adercinho

Olá colegas,

Tenho a seguinte dúvida: sou iniciante no mundo do Banco de Dados

relacionamentos e tals, ai queria uma ajuda de você.
O problema é o seguinte:

Ideologia Antiga:

Uma Empresa tem várias campanhas.
Uma Campanha tem vários Eventos.
Um Evento tem várias Fases.
Um Fase tem várias Publicações.

Ideologia Nova(A que vai ser implementada no sistema):

A empresa quer entrar no sistema e registrar uma campanha. Não tem eventos ?

não. Mas tem publicações. Quero cadastrar a campanha e a publicação mas sem o

evento e sem a fase.
Agora quero cadastrar um campanha com eventos e esses eventos terem as

publicações mas sem fases. E assim por diante…

Estou usando o DataModeler da Oracle para fazer está modelagem. vou anexar a

imagem para vocês verem como eu imaginei que seria o relacionamento, caso esteje

errado me ajudar ai pessoal.
[img]
Ou você achão que eu deveria tirar a tabela intermediaria REGISTRO_PUBLICACAO e

fazer o relacionamento somente
CAMPANHA >>> PUBLICACAO ?? Mas se pensarmos bem a fase que tem a publicação(caso

tenha camapanha e o evento), ou caso não tenho fase o evento tem a publicação ou

ainda a campanha que tem a publicação(caso não tenha a nem o evento, nem a

publicação).

Obrigado. Boa Noite! :wink:

http://img526.imageshack.us/img526/8404/perguntamodelagem.png

3 Respostas

MarkKnopfler

Como o relacionamento não será mais aquele linear, o ideal é que cada entidade possa referenciar qualquer uma outra que esteja “acima” na hierarquia. Ex.:

Campanha possui id_empresa
|
v
Evento possui id_empresa e id_campanha
|
v
Fase possui id_empresa, id_campanha e id_evento
|
v
e assim por diante…

Claro que vc poderia colocar também apenas as ligações que vc necessitar de fato. Fica a seu critério.
Nesse caso, não haverá a mesma regra de integridade referencial que torne um campo “obrigatório”. As chaves estrangeiras poderiam ser configuradas como ON DELETE SET NULL. No Oracle, por exemplo:

CONSTRAINT fk_column
FOREIGN KEY (column1, column2, … column_n)
REFERENCES parent_table (column1, column2, … column_n)
ON DELETE SET NULL

adercinho

Olá Mark, obrigado pela rápida resposta.

O que está me dando mais trabalho é a tabela publicação.
dê uma olhada:
http://img526.imageshack.us/img526/8404/perguntamodelagem.png

E no caso da tabela publicação ficaria assim ?

cd_publicacao
cd_empresa
cd_campanha
cd_evento
cd_fase

???

e no caso se eu tiver uma publicação que pertença a uma campanha e não pertença nem a uma evento e nem uma fase.
as colunas cd_evento e cd_fase ficar em branco é isso ?

Acho que isso não pode acontecer não.

MarkKnopfler

Exatamente.

Criado 11 de novembro de 2012
Ultima resposta 12 de nov. de 2012
Respostas 3
Participantes 2