edymrex 0 Denunciar post Postado Setembro 11, 2007 Bem estou estudando banco de dados e tenho umas dúvidas irei ordena-las: Relacionamento 1;* Pelo que eu estudei esse relacionamento funciona da seguinte forma: suponha que eu tenha um editor e esse editor pode publicar vários livros neste caso o relacionamento será de 1:* onde cada editor pode publicar vários livros, a tabela ficará da seguinte forma: CREATE TABLE editor( editorID INT NOT NULL AUTO_INCREMENT, editorNomevarchar (30) NOT NULL, PRIMARY KEY (editorID)) TYPE=INNODB;CREATE TABLE titulos( isbn varchar (20) NOT NULL, title varchar (100) NOT NULL, editionNumero INT NOT NULL, copyright varchar (4) NOT NULL, editorID INT NOT NULL, imageFile varchar (20) NOT NULL, preco REAL NOT NULL, PRIMARY KEY (isbn), INDEX (publisherID), FOREIGN KEY (editorID ) REFERENCES editor(editorID )) TYPE=INNODB;Nesse relacionamento é que tenho poucas dúvidas nos outros tenho mais dúvidas, neste caso sempre que eu vou dar um insert na tabela titulos obrigatoriamente terei que indicar a chave estrangeira que no caso é uma chave primaria na tabela editor isso assegura que meu relacionamento será de 1 :* , por favor galera se eu estiver errado me corrijam. Relacionamento *;* Vamos supor que eu tenha uma tabela autor e uma tabela titulos e uma tabela intermadiária chamada de autorISBN bem, nesta tabela autorISBN eu tenho uma chave estrangeira da tabela autor que dizer um autor pode ter um número arbritário de ISBN, e tem outra tabela chamada titulos que também tem chave estrangeira na tabela autorISBN quer dizer para cada titulo eu posso ter um número arbritário de autorISBN, neste caso um autor pode escrever um número arbritário de títulos e um título pode ter um número arbritário de autores, segue as tabelas abaixo: CREATE TABLE titulos( isbn varchar (20) NOT NULL, title varchar (100) NOT NULL, editionNumero INT NOT NULL, copyright varchar (4) NOT NULL, editorID INT NOT NULL, imageFile varchar (20) NOT NULL, preco REAL NOT NULL, PRIMARY KEY (isbn), INDEX (publisherID), FOREIGN KEY (editorID ) REFERENCES editor(editorID )) TYPE=INNODB;CREATE TABLE autor( autorID INT NOT NULL AUTO_INCREMENT, firstName varchar (20) NOT NULL, lastName varchar (30) NOT NULL, PRIMARY KEY (autorID)) TYPE=INNODB;CREATE TABLE autorISBN ( autorID INT NOT NULL, isbn varchar (20) NOT NULL, INDEX (autorID), FOREIGN KEY (autorID) REFERENCES autor(autorID), INDEX (isbn), FOREIGN KEY (isbn) REFERENCES titulos(isbn)) TYPE=INNODB;Sempre que eu tiver um relacionamento *:* eu terei que ter uma tabela intermediaria entre as tabelas que eu quero o relacionamento..?? Relacionamento 1;1 Esse é que eu tenho mais dúvidas, bem pelo que eu verifiquei no google todas as tabelas que tem o relacionamento 1:1 tem uma chave estrangeira da tabela principal por exemplo: tenho uma tabela employees 'empreagado' ela tem um chave primaria chamada de socialSecurityNumber que é uma chave primaria dessa tabela, tenho várias outras tabelas e todas com uma chave estrangeira dessa tabela empregados, as tabelas são salariedEmployees commissionEmployees,horlyEmployees e basePlusCommissionEmployees o que deu a entender e que cada empregado tem um sálario base um sálario hora uma comisão mas achei estranho é nas tabelas que contém a chave primaria eu posso colocar diversos dados repetidos dai fica um relacionamento 1:* tem como solucionar isto..?? as tabelas estão abaixo: CREATE TABLE employees ( socialSecurityNumber varchar (30) NOT NULL, firstName varchar (30) NOT NULL, lastName varchar (30) NOT NULL, birthday date NOT NULL, employeeType varchar (30) NOT NULL, departmentName varchar (30) NOT NULL, PRIMARY KEY (socialSecurityNumber)) TYPE=INNODB;CREATE TABLE salariedEmployees ( socialsecurityNumber varchar (30) NOT NULL, weeklySalary real NOT NULL, bonus real, INDEX (socialSecurityNumber), FOREIGN KEY (socialSecurityNumber) REFERENCES employees (socialSecurityNumber)) TYPE=INNODB;CREATE TABLE commissionEmployees ( socialSecurityNumber varchar (30) NOT NULL, grossSales int NOT NULL, commissionRate real NOT NULL, bonus real, INDEX (socialSecurityNumber), FOREIGN KEY (socialSecurityNumber) REFERENCES employees (socialSecurityNumber)) TYPE=INNODB;CREATE TABLE basePlusCommissionEmployees ( socialSecurityNumber varchar (30) NOT NULL, grossSales int NOT NULL, commissionRate real NOT NULL, baseSalary real NOT NULL, bonus real, INDEX (socialSecurityNumber), FOREIGN KEY (socialSecurityNumber) REFERENCES employees (socialSecurityNumber)) TYPE=INNODB;CREATE TABLE hourlyEmployees ( socialSecurityNumber varchar (30) NOT NULL, hours int NOT NULL, wage real NOT NULL, bonus real, INDEX (socialSecurityNumber), FOREIGN KEY (socialSecurityNumber) REFERENCES employees (socialSecurityNumber)) TYPE=INNODB;Galera tudo que estudei foi no google e pesquisei em alguns livros por isso peço a ajuda de vocês estou com receio de aprender conceitos de forma errada. Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Setembro 13, 2007 Nesse relacionamento é que tenho poucas dúvidas nos outros tenho mais dúvidas, neste caso sempre que eu vou dar um insert na tabela titulos obrigatoriamente terei que indicar a chave estrangeira que no caso é uma chave primaria na tabela editor isso assegura que meu relacionamento será de 1 :* , por favor galera se eu estiver errado me corrijam.Esse é o relacionamento mais comum.É isso mesmo que voce disse.Só acrescentando:A chave primária se desloca da tabela com relacionamento "1" para a "*". Tornando essa uma chave estrangeira.Esse é que eu tenho mais dúvidas, bem pelo que eu verifiquei no googletodas as tabelas que tem o relacionamento 1:1 tem uma chave estrangeira da tabela principal por exemplo: tenho uma tabela employees 'empreagado' ela tem um chave primaria chamada de socialSecurityNumber que é uma chave primaria dessa tabela, tenho várias outras tabelas e todas com uma chave estrangeira dessa tabela empregados, as tabelas são salariedEmployeescommissionEmployees,horlyEmployees e basePlusCommissionEmployeeso que deu a entender e que cada empregado tem um sálario base um sálario hora uma comisãoEsse é o relacionamento menos comum, pelo menos eu dificilmente vejo um desses.No relacionamento Um para Um temos o lado opcional e o lado obrigatório. Nesse caso não existe salário se não tiver empregado, porém existe empregado sem salário.A chave primária se desloca em direção ao lado opcional.mas achei estranho é nas tabelas que contéma chave primaria eu posso colocar diversos dados repetidos dai fica um relacionamento 1:* tem como solucionar isto..??A chave primária se desloca em direção ao lado opcional. Esse campo passa a ser chave estrangeira e chave primária. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites