Hej! Mam do zaprojektowania taką bazę danych MySQL (engine InnoDB) z 4 tabelami.
Baza będzie obsługiwana z poziomu PHP
Tabele :

  1. psy
  2. wlasciciel (psa)
  3. hodowla
  4. miot

W bazie są następując relacje:

  • Jeden właściciel może mieć wiele psów (pies może mieć tylko jednego właściciela)
  • Jeden pies należy do jednej hodowli
  • Jeden pies należy tylko do jednego miotu
  • Jedna hodowla może zawierać wiele miotów

Relacje rozrysowałem sobie w DBDesigner...
No i wygenerowałem Kod. Tylko chciałbym, żeby ktoś sprawdził czy to dobrze. Owszem PHPMyAdmin po wklejeniu kodu tworzy tabele, ale zupełnie nie wiem czy to dobrze robię i czy z poziomu PHP będzie łatwo to obsługiwać...

 
CREATE TABLE pies_tabela (
  ID_pies INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  plec VARCHAR(16) NULL,
  imie VARCHAR(255) NULL,
  ID_wlasciciel INTEGER UNSIGNED NULL,
  przydomek VARCHAR NULL,
  data_urodzenia VARCHAR NULL,
  nr_tatuazu INTEGER UNSIGNED NULL,
  nr_chip INTEGER UNSIGNED NULL,
  nr_rej_odd INTEGER UNSIGNED NULL,
  ID_hodowla INTEGER UNSIGNED NULL,
  id_ojciec INTEGER UNSIGNED NULL,
  id_matka INTEGER UNSIGNED NULL,
  ID_miot INTEGER UNSIGNED NULL,
  uprawnienia_hod VARCHAR(3) NULL,
  dysplazja VARCHAR(255) NULL,
  zdjecie1 VARCHAR(255) NULL,
  zdjecie2 VARCHAR(255) NULL,
  chml VARCHAR(255) NULL,
  chpl VARCHAR(255) NULL,
  inter_chmp VARCHAR(255) NULL,
  inne VARCHAR(255) NULL,
  PRIMARY KEY(ID_pies)
)
TYPE=InnoDB;

CREATE TABLE wlasciciel_tabela (
  ID_wlasciciel INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  pies_tabela_ID_pies INTEGER UNSIGNED NOT NULL,
  imie VARCHAR(255) NULL,
  nazwisko VARCHAR(255) NULL,
  ulica VARCHAR(255) NULL,
  kod VARCHAR(8) NULL,
  miejscowosc VARCHAR(255) NULL,
  telefon1 INTEGER UNSIGNED NULL,
  telefon2 INTEGER UNSIGNED NULL,
  telefon3 INTEGER UNSIGNED NULL,
  PRIMARY KEY(ID_wlasciciel, pies_tabela_ID_pies),
  INDEX wlasciciel_tabela_FKIndex1(pies_tabela_ID_pies),
  FOREIGN KEY(pies_tabela_ID_pies)
    REFERENCES pies_tabela(ID_pies)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

CREATE TABLE miot_tabela (
  ID_miot INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  pies_tabela_ID_pies INTEGER UNSIGNED NOT NULL,
  literka VARCHAR(255) NULL,
  ID_hodowla INTEGER UNSIGNED NULL,
  PRIMARY KEY(ID_miot),
  INDEX miot_tabela_FKIndex1(pies_tabela_ID_pies),
  FOREIGN KEY(pies_tabela_ID_pies)
    REFERENCES pies_tabela(ID_pies)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);

CREATE TABLE hodowla_tabela (
  ID_hodowla INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  miot_tabela_ID_miot INTEGER UNSIGNED NOT NULL,
  pies_tabela_ID_pies INTEGER UNSIGNED NOT NULL,
  nazwa VARCHAR(255) NULL,
  ulica VARCHAR(255) NULL,
  kod VARCHAR(8) NULL,
  miasto VARCHAR(255) NULL,
  telefon1 INTEGER UNSIGNED NULL,
  telefon2 INTEGER UNSIGNED NULL,
  telefon3 INTEGER UNSIGNED NULL,
  PRIMARY KEY(ID_hodowla),
  INDEX hodowla_tabela_FKIndex1(pies_tabela_ID_pies),
  INDEX hodowla_tabela_FKIndex2(miot_tabela_ID_miot),
  FOREIGN KEY(pies_tabela_ID_pies)
    REFERENCES pies_tabela(ID_pies)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
  FOREIGN KEY(miot_tabela_ID_miot)
    REFERENCES miot_tabela(ID_miot)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
);


Obrazek z relacjami
http://imageshack.us/photo/my-images/94/baza1projekt.png/

Z góry dzięki za pomoc.
(Szczerze mówiąc w VB i Access tworzenie relacji i operowanie na bazie danych wydaje mi się znacznie łatwiejsze, ale niestety nie moge tera zrobić w Access i Transact SQL)