Ich habe zu MySQL einige Schlüsselfragen. In meiner Datenbank sollen verschiedene Produktdaten gespeichert werden:
create database produkt\_db;
use produkt\_db;
create table produkt
(
produkt\_id int unsigned not null auto\_increment primary key,
produkt\_name varchar(20) not null,
gewicht tinyint unsigned not null
) engine = InnoDB;
create table farbe
(
farb\_id tinyint unsigned not null primary key,
farb\_name varchar(15) not null
) engine = InnoDB;
create table produkt\_farbe
(
produkt\_id int unsigned not null references produkt(produkt\_id),
farb\_id tinyint unsigned not null references farbe(farb\_id)
) engine = InnoDB;
create table kurzbeschreibung
(
produkt\_id int unsigned not null primary key,
beschreibung varchar(200) not null
) engine = InnoDB;
1.)
Die Tabelle „produkt_farbe“ bildet eine m:n Beziehung ab. Jedes Produkt kann mehrfarbig sein und eine Farbe kann mehreren Produkten zugeordnet werden. Benötigt diese Tabelle, bestehend aus zwei Fremdschlüssel, einen Primärschlüssel? Wäre ein aus „produkt_id“ und „farb_id“ zusammengsetzter Primärschlüssel für diese Tabelle eine Option?
create table produkt_farbe
(
produkt_id int unsigned not null references produkt(produkt_id),
farb_id tinyint unsigned not null references farbe(farb_id),
primary key (produkt_id, farb_id)
) engine = InnoDB;
2.)
Zu einigen Produkten, aber nicht zu allen, möchte ich auch eine Produktbeschreibung in der Datenbank speichern, darum habe ich eine neue Tabelle (kurzbeschreibung) erstellt. Die Produkt ID (produkt_id) ist hier anscheinend nicht nur ein Fremdschlüssel in Bezug auf die Tabelle „produkt“, sondern ebenfalls ein eindeutiger Schlüssel (quasi Primärschlüssel). Stimmt das so?
3.)
In der Tabelle „produkt_farbe“ ist die Produkt ID (produkt_id) ein Fremdschlüssel in Bezug auf die Produkt ID aus der Tabelle „produkt“. Ist das so richtig? Ein Bezug auf die Tabelle „kurzbeschreibung“ wäre wohl Unsinn, da es für das Produkt u.U. keine Produktbeschreibung gibt, oder?
Schon mal vielen Dank für zahlreiche Antworten