Relacionamentos 1:1 , 1:*; *:*

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.

Seus conceitos estao certos.
Muito bom! Se foi so pelo google e livros, PARABENS!

A idéia do relacionamento de : é essa mesmo.

Agora para o relacionamento de 1:1 acredito q as outras tabelas que fazem relacionamento tenham que ter sua chave primária, pois toda tabela necessita de sua chave primária.

Boa sorte com os estudos!
Continue assim!

Abs!

Valew, renomoto.
Atualmente faço ciência da computação e ainda não vi nada de banco de dados
so algoritmos chatos e calculo e mais calculo, como começei a trabalhar tenho que aprender as coisas na raça mesmo e fico com receio de aprender conceitos errados mais em questão do relacionamento 1:1 com certeza tem k ter a chave estrangeira caso contrário quebra a regra de integridade de entidade deve ter restrições para esse tipo de relacionamento vou dar uma pesquisada.

Legal, eh eu lembro nas minhas primeiras aulas que estudava algoritmos chatos tb. hehehe
E agora to me formando… eh o tempo passa rápido…

Boa sorte!

Oi Tudo bem?
Seguinte, nos seus relacionamentos 1:1 para que os dados não se repitam a sua chave primária nas tabelas do salario base, comissão etc, deve ser a própria chave estrangeira, essas tabelas são conhecidas como entidades fracas pois elas dependem 100% de uma outra tabela.

Só uma dica que pode ajudar você na questão de performance no banco e que pode te aliviar algumas dores de cabeça no futuro, não use Varchar como chave primária, em uma consulta com muitos registros demora bastante.

Outra coisinha que gosto de fazer é criar todas as minhas chaves primárias das tabelas com um ID com auto numeração ou sequence se for Oracle, nunca criando chaves primárias compostas, aí em vez de você criar a chave primárias composta, crie uma chave única composta, até mesmo nas tabelas intermediarias que surgem de relacionamentos N:N, desse jeito fica bem mais fácil para você manipular os dados depois, Por exemplo imagina que você tenha que alterar um registro de uma tabela que tenha uma chave primária composta de 6 campos, você vai ter que se certificar de que todos os 6 campos estão corretos, com o ID você só verifica um campo a a chave única cuida do resto para que não se repita! Eu acho bem mais fácil!

Valew veronica, aqui na minha empresa fiquei responsável para modelar um banco apesar de nunca ter feito um curso, mais qualquer dúvida irei colocar aqui no forum obrigado pela dicas.