Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Trzecia postać normalna, ...czy to już jest to??
primo
post 26.03.2006, 09:11:44
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 0
Dołączył: 30.12.2003
Skąd: Strzegom

Ostrzeżenie: (0%)
-----


Witam,

normalizuję swoją bazę danych wg trzech postaci normalnych. Jako, że nie jest to proces banalny proszę o weryfikację swoich założeń.
Na początek kilka słów objaśnienia:
- tabela filmy - jest tabelą główną posiadająca mnóstwo kluczy obcych - czy w związku z tym te tabele ponny być typu InnoDB czy mogą być MyISAM??
- tabela filmyrezyser i filmyaktorzy rowniez grupuje klucze obce, ktore dopiero z tej tabeli są dodawane do tabeli glownej czyli - filmy.

  1. --
  2. -- Struktura tabeli dla `aktorzy`
  3. --
  4.  
  5. CREATE TABLE `aktorzy` (
  6. `IDAktora` tinyint(4) NOT NULL AUTO_INCREMENT,
  7. `aktor` varchar(100) NOT NULL DEFAULT '',
  8. PRIMARY KEY (`IDAktora`),
  9. KEY `aktor` (`aktor`)
  10. ) TYPE=MyISAM AUTO_INCREMENT=1 ;
  11.  
  12. --
  13. -- Zrzut danych tabeli `aktorzy`
  14. --
  15.  
  16.  
  17. -- --------------------------------------------------------
  18.  
  19. --
  20. -- Struktura tabeli dla `filmy`
  21. --
  22.  
  23. CREATE TABLE `filmy` (
  24. `IDFilmu` int(11) NOT NULL AUTO_INCREMENT,
  25. `tytul` varchar(250) NOT NULL DEFAULT '',
  26. `tytul_org` varchar(250) NOT NULL DEFAULT '',
  27. `IDNosnika` tinyint(1) NOT NULL DEFAULT '0',
  28. `IDGatunku` tinyint(1) NOT NULL DEFAULT '0',
  29. `okladka` varchar(60) NOT NULL DEFAULT '',
  30. `IDLektora` tinyint(1) NOT NULL DEFAULT '0',
  31. `IDFilmyRezyser` tinyint(4) NOT NULL DEFAULT '0',
  32. `IDFilmyAktorzy` tinyint(4) NOT NULL DEFAULT '0',
  33. `recenzja` text NOT NULL,
  34. `dataDodania` timestamp(14) NOT NULL,
  35. PRIMARY KEY (`IDFilmu`),
  36. FULLTEXT KEY `tytul` (`tytul`,`tytul_org`)
  37. ) TYPE=MyISAM AUTO_INCREMENT=1 ;
  38.  
  39. --
  40. -- Zrzut danych tabeli `filmy`
  41. --
  42.  
  43.  
  44. -- --------------------------------------------------------
  45.  
  46. --
  47. -- Struktura tabeli dla `filmyaktorzy`
  48. --
  49.  
  50. CREATE TABLE `filmyaktorzy` (
  51. `IDFilmyAktorzy` tinyint(4) NOT NULL AUTO_INCREMENT,
  52. `IDFilmu` int(11) NOT NULL DEFAULT '0',
  53. `IDAktora` tinyint(4) NOT NULL DEFAULT '0',
  54. PRIMARY KEY (`IDFilmyAktorzy`)
  55. ) TYPE=MyISAM AUTO_INCREMENT=1 ;
  56.  
  57. --
  58. -- Zrzut danych tabeli `filmyaktorzy`
  59. --
  60.  
  61.  
  62. -- --------------------------------------------------------
  63.  
  64. --
  65. -- Struktura tabeli dla `filmyrezyser`
  66. --
  67.  
  68. CREATE TABLE `filmyrezyser` (
  69. `IDFilmyRezyser` tinyint(4) NOT NULL AUTO_INCREMENT,
  70. `IDFilmu` int(11) NOT NULL DEFAULT '0',
  71. `IDRezysera` tinyint(4) NOT NULL DEFAULT '0',
  72. PRIMARY KEY (`IDFilmyRezyser`)
  73. ) TYPE=MyISAM AUTO_INCREMENT=1 ;
  74.  
  75. --
  76. -- Zrzut danych tabeli `filmyrezyser`
  77. --
  78.  
  79.  
  80. -- --------------------------------------------------------
  81.  
  82. --
  83. -- Struktura tabeli dla `gatunek`
  84. --
  85.  
  86. CREATE TABLE `gatunek` (
  87. `IDGatunku` tinyint(4) NOT NULL AUTO_INCREMENT,
  88. `gatunek` varchar(50) NOT NULL DEFAULT '',
  89. PRIMARY KEY (`IDGatunku`),
  90. KEY `gatunek` (`gatunek`)
  91. ) TYPE=MyISAM AUTO_INCREMENT=1 ;
  92.  
  93. --
  94. -- Zrzut danych tabeli `gatunek`
  95. --
  96.  
  97.  
  98. -- --------------------------------------------------------
  99.  
  100. --
  101. -- Struktura tabeli dla `lektor`
  102. --
  103.  
  104. CREATE TABLE `lektor` (
  105. `IDLektora` tinyint(4) NOT NULL AUTO_INCREMENT,
  106. `lektor` char(3) NOT NULL DEFAULT '',
  107. PRIMARY KEY (`IDLektora`),
  108. KEY `lektor` (`lektor`)
  109. ) TYPE=MyISAM AUTO_INCREMENT=1 ;
  110.  
  111. --
  112. -- Zrzut danych tabeli `lektor`
  113. --
  114.  
  115.  
  116. -- --------------------------------------------------------
  117.  
  118. --
  119. -- Struktura tabeli dla `nosniki`
  120. --
  121.  
  122. CREATE TABLE `nosniki` (
  123. `IDNosnika` tinyint(4) NOT NULL AUTO_INCREMENT,
  124. `nosnik` char(3) NOT NULL DEFAULT '',
  125. PRIMARY KEY (`IDNosnika`),
  126. KEY `nosnik` (`nosnik`)
  127. ) TYPE=MyISAM AUTO_INCREMENT=1 ;
  128.  
  129. --
  130. -- Zrzut danych tabeli `nosniki`
  131. --
  132.  
  133.  
  134. -- --------------------------------------------------------
  135.  
  136. --
  137. -- Struktura tabeli dla `rezyser`
  138. --
  139.  
  140. CREATE TABLE `rezyser` (
  141. `IDRezysera` tinyint(4) NOT NULL AUTO_INCREMENT,
  142. `rezyser` varchar(100) NOT NULL DEFAULT '',
  143. PRIMARY KEY (`IDRezysera`),
  144. KEY `rezyser` (`rezyser`)
  145. ) TYPE=MyISAM AUTO_INCREMENT=1 ;
  146.  
  147. --
  148. -- Zrzut danych tabeli `rezyser`
  149. --


--------------------
Bieganie jest tym co kocham najbardziej, jest dla mnie powietrzem w moich płucach, krwią płynącą w żyłach, dawką endorfin, źródłem szczęścia i celem samym w sobie... A w skrócie to jestem uzależniony od biegania.
primo
gg1148730
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
elessar
post 28.03.2006, 09:59:14
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 12.05.2003
Skąd: Mikołów

Ostrzeżenie: (0%)
-----


Ja bym powiedzial ze nawet to jest juz 4 (albo nawet i 5) postac :-)
Co do InnoDB/MyISAM -> jezeli chcesz korzystac z kluczy obych to musisz zastosowac InnoDB.


--------------------
..::elessar::..
Go to the top of the page
+Quote Post
primo
post 28.03.2006, 14:11:54
Post #3





Grupa: Zarejestrowani
Postów: 254
Pomógł: 0
Dołączył: 30.12.2003
Skąd: Strzegom

Ostrzeżenie: (0%)
-----


Cytat
ze nawet to jest juz 4 (albo nawet i 5) postac


to tak z przekąsem bez świadomości o tym co mówimy czy poważnie questionmark.gif Istnieją kolejne postacie normalizacji struktury bazy - stąd moje pytanie.

A tak na chłopski rozum to wprowadzilibyście jeszcze jakieś modyfikacje - zwłaszcza czy połączenie tych tabel filmyaktorzy i filmyrezyser mnie interesują questionmark.gif


--------------------
Bieganie jest tym co kocham najbardziej, jest dla mnie powietrzem w moich płucach, krwią płynącą w żyłach, dawką endorfin, źródłem szczęścia i celem samym w sobie... A w skrócie to jestem uzależniony od biegania.
primo
gg1148730
Go to the top of the page
+Quote Post
splatch
post 29.03.2006, 13:09:45
Post #4





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


primo zrób jakiś diagram, rysunek, cokolwiek - o wiele łatwiej się czyta.

Na pierwszy rzut oka: to nie jest 3 postać normalna. Masz niejasne powiązanie - chodzi o filmy. W tabeli filmy masz IDFilmyAktorzy - zbyteczne. Skoro Masz w firlmyaktorzy id filmu to po co powielać te same dane w filmach? W ten sposób ograniczasz się również do tego, że jeden film ma jednego aktora (jeden wiersz w filmyaktorzy przywiązany do filmu). To samo tyczy się reżyserów.

Ten post edytował splatch 29.03.2006, 13:14:08


--------------------
Łukasz Dywicki
Independent Java and open source software consultant.
Blog - Java, OSGi, integracja oprogramowania..
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 21:45