SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 22.06.2010, 12:30:11
Leyyin Leyyin ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 44
Beiträge: 67
Primärschlüssel-Datentyp

Hallo,

eine neue Frage:
Man muss den Primärschlüssel-Datentyp nicht immer integer wählen oder?
Obwohl meine alle Tabellen jeweils einen integer-Prim.schl. namens "id" haben,
würde ich gerne eine davon als VARCHAR ändern.

Der Grund:
Nun habe ich drei Tabellen. (Natürlich habe ich auch noch andere Tabellen aber
es reicht nun aus, dass wir nur diesen drei betrachten)
  • person
  • institut
  • job

Die beiden Tabellen "person" und "institut" haben jeweils einen integer-Primärschlüssel "id"
und haben einen Many-to-Many-Beziehung.
Daher existiert die dritte Tabelle "job", deren Primärschlüssel sich aus den Primärschlüsseln der beiden anderen Tabellen bildet.

Meine Frage ist nun folgendes:

Geht irgend etwas bei der Beziehung der drei Tabellen kaput,
wenn ich den Schlüssel von Institut "id" lösche und
stattdessen die Institutname als Primärschl. wähle?

Das möchte ich deswegen tun, weil
  1. Duplikate bei der Instutname nicht erwünscht sind.
  2. somit die Normalisation verletzt wird. (oder?)

Denn die Tabelle hat ja eine andere minimale Schlüssel-Kandidat außer der "id"; nämlich die "name"...

Was würdet ihr mir nun empfehlen?
den jetzigen Primärschl. behalten und die "name" indizieren,
oder jetzigen Primärschl. vernichten und stattdessen die "name" als Prim.schl. definieren?
Mit Zitat antworten
  #2  
Alt 22.06.2010, 16:17:10
Leyyin Leyyin ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 44
Beiträge: 67
AW: Primärschlüssel-Datentyp

Wird niemand etwas sagen?
Oder bin ich sehr ungeduldig? :-)

Was ich gerne wissen möchte ist eigentlich das, ob ein Schlüssel,
der für einer anderen Tabelle ein Fremdschlüssel oder Teil der Primärschlüsse ist,
unbedingt einen Integer-Wert haben muss.

Ausserdem würde ich gerne wisse, ob es logisch ist oder
-besser gesagt- nicht verletzlich für die Normalisation ist,
dass eine Tabelle, eine anderes Feld sogar vielleich zwei seperate Felderausser dem Prim.schl. id hat, das jeweils ein Primärschlüsselkandidat ist.

z.B.

TabelleA
id Feld1 Feld2
1 a w
2 b x
3 c y
4 d z

Was meint ihr? Ist das ok so?
Wenn nicht, wie kann es anders machen?

Geändert von Leyyin (22.06.2010 um 16:31:45 Uhr)
Mit Zitat antworten
  #3  
Alt 22.06.2010, 21:52:10
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
AW: Primärschlüssel-Datentyp

Zitat:
Zitat von Leyyin Beitrag anzeigen
Wird niemand etwas sagen?
Oder bin ich sehr ungeduldig? :-)
ja, das bist du wohl... threads bitte nicht pushen; das wird nicht so gern gesehen.

Zitat:
Zitat von Leyyin Beitrag anzeigen
[...] ob ein Schlüssel [...] unbedingt einen Integer-Wert haben muss.
nein, ein schlüssel muss kein integer sein. integers sind jedoch performanter hinsichtlich indizierung und damit bei jeder abfrage, die (wünschenswerterweise) indizies nutzt. siehe dazu auch: Using CHAR keys for joins.

Zitat:
Zitat von Leyyin Beitrag anzeigen
ob es logisch ist oder [...] nicht verletzlich für die Normalisation ist [...] Primärschlüsselkandidat ist.
Zitat:
Primärschlüssel: Ein ausgewählter Schlüsselkandidat. Die Werte dieses Schlüssels können in einer anderen Tabelle als Fremdschlüssel verwendet werden.
[quelle: Schlüssel (Datenbank)]

cx
Mit Zitat antworten
  #4  
Alt 23.06.2010, 14:43:00
Leyyin Leyyin ist offline
Anfänger
 
Registriert seit: May 2010
Alter: 44
Beiträge: 67
AW: Primärschlüssel-Datentyp

Hmm...
ok... Dann nur noch eine Frage zu dem Thema, um nur sicher zu sein:

Bei der Relation
A(a_id, a_name, a_art)
sind die Attributen a_id und a_name Schlüsselkandidaten.

Davon habe ich a_id als Primärschlüssel gewählt.

"Die dritte Normalform ist erreicht, wenn sich das Relationenschema in 2NF befindet, und jedes Nichtschlüsselattribut von keinem Schlüsselkandidaten transitiv abhängt."

Somit ist bei meiner Relation die 3.NF nicht verletzt,
da a_art von keinem der Schlüsselkandidaten transitiv abhängt, oder?

Zitat:
Zitat von cortex Beitrag anzeigen
Diese Quelle hat mir sehr geholfen, danke.

Und für die Normalformen das hier:

http://de.wikipedia.org/wiki/Normali...form_.281NF.29
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Vorhandenen von Primärschlüssel überprüfen Tim1901091 MySQLi/PDO/(MySQL) 1 05.04.2010 11:28:55
Datensätze über Feld (Datentyp time) selektieren engel4u MySQLi/PDO/(MySQL) 2 07.10.2006 15:55:54
brauche dringend antwort in sachen primärschlüssel bei . . . selbstlerner MySQLi/PDO/(MySQL) 1 05.07.2006 07:23:28
Datentyp, maxlength, usw. per SELECT abfragen? basti123456 MySQLi/PDO/(MySQL) 4 11.01.2006 21:48:05
Eigener Datentyp Generator MySQLi/PDO/(MySQL) 20 21.05.2005 19:15:34


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:25:06 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt