• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

kleine Frage zur Tabellenstruktur

mexxx

Neues Mitglied
ich muss eine Tabelle machen, wo jeder einen namen und 2 verschiedene (z.B Spalte A und Spalte B) beliebig viele einträge dazu machen kann. Muss ich da für jeden namen eine neue Tabelle anlegen, oder wie kann ich das besser lösen?
 
Werbung:
Für jeden Benutzer eine neue Tabelle erstellen ist eine Idee, die man am besten vergisst.
Es geht einfacher und weniger platzverbrauchend.

Da ich nicht genau verstanden habe, was du tun willst, kann ich dir so nicht helfen.
Drücke dich klarer aus und gib keine Beispiele sondern wirklich Benötigtes.
 
Das was du da machen willst, nennt sich Normalisierung. So wie ich dich verstehe hast du eine 1:n Beziehung, dafür brauchst du nur zwei Tabellen, in einer stehen die Namen in der anderen die Eigenschaften, verbunden werden diese über eine ID die du den Namen zuordnest.
 
Werbung:
sorry, dass ich mich so undeutlich ausgedrückt habe, hoffe jetzt wirds verständlicher :)

Es wird ein Name angelegt: "Hans". Jetzt soll jeder in die Tabelle einfügen können, was Hans richtig gemacht hat und was Hans falsch gemacht hat. unswar beliebig oft.
Dann kann ein weiterer User den Namen Otto eintragen, und auch bei Otto können beliebig viele Fehler und richtige Handlungen eingetragen werden.

Ich wüsste nicht wie ich das in eine einzige Tabelle unterbringen soll. Und für jeden namen eine neue Tabelle scheint mir bisschen unpraktisch.

Wie müsste(n) meine Tabelle (n) aussehen?
 
User_table:

UserID | Vorname | nachname use....


Taetigkeiten_table

TaetID | UserID | Taetigkeit | Ergebnis



so in etwa müsste es aussehen.

Agenda:

Fett = Primärschlüssel
Kursiv = Fremdschlüssel
 
Werbung:
hierzu muss ich fragen,
wenn der name nur einmal vorkommen darf, kann ich doch auch den namen als Prmärschlüssel nehmen und somit als Fremdschlüsseln in der unteren Tabelle (im obigen Beispiel)? ist das korrekt?
 
Zuletzt bearbeitet:
kann ich doch auch den namen als Prmärschlüssel nehmen und somit als Fremdschlüsseln in der unteren Tabelle (im obigen Beispiel)? ist das korrekt?
Das ist korrekt, aber nicht empfehlenswert. Da dies deine Daten unnötig aufbläht und deine SQL Operationen verlangsamt. Da Computer mit Zahlen wesentlich schneller und sparsamer umgehen können, als mit Zeichenketten.
 
Werbung:
Frage von einem Anfänger

Das ist korrekt, aber nicht empfehlenswert. Da dies deine Daten unnötig aufbläht und deine SQL Operationen verlangsamt. Da Computer mit Zahlen wesentlich schneller und sparsamer umgehen können, als mit Zeichenketten.

Ich bin neuling und Frage mich ob so etwas einen Sinn macht.

Ich gehe mal davon aus ,dass ich sehr viele Namen in einer Tabelle habe.
Kann man dieses auch in andere einordnen und macht es dieses dann schneller . ich fände es schön wenn dieses übersichtlich wäre.

User_table:

UserID | Vorname | nachname use....


Taetigkeiten_table

TaetID | UserID | Taetigkeit | Ergebnis



also:

User_table:

UserID | Tätigkeit | use....


Taetigkeiten_table1

TaetID | UserID | Taetigkeit1 | Vorname | nachname | Ergebnis



Taetigkeiten_table2

TaetID | UserID | Taetigkeit2 | Vorname | nachname | Ergebnis


Taetigkeiten_table3

TaetID | UserID | Taetigkeit3 | Vorname | nachname | Ergebnis


ich kenne mich auch nicht mit der Eingabe von Daten aus.
sofern ich tätigkeit 1 habe sollte der Name dort erscheinen. macht man sowas? wenn einer beide Tätigkeiten ausübt würde dann der Name zweimal dort stehen. so etwas sollte man ja vermeiden, oder? insofern wenn ich noch viele tabellen haben müsste man diese per PhP zuordnen ,so etwas ist auch unsinn ,oder? oder heißt bei so etwas der name immer name und steht in zugehörigen tabelle als name und nicht als Nametätigkeit?

Wenn man so etwas macht müsste man nicht alle namen durchsuchen besser nummern. bei ausgabe. oder?
Nummern sucht geht zu schnell somit macht dieses keiner. Oder?
aber in einer grossen viele namen tabelle herumkramen ist doch mühsamer. Oder?


hmmm

wie gesagt ich bin Neuling .
 
Du möchtest dich mit Normalisierung beschäftigen. Ich kann das hier nicht in 2 Sätzen erklären.
 
Du möchtest dich mit Normalisierung beschäftigen. Ich kann das hier nicht in 2 Sätzen erklären.

Normalisierung ist dieses mit dem mehrfach vorkommen von daten. Oder?

Ich dachte so mehr an antworten wie das nein ist richtig, so macht man dieses nicht.. Möglichkeit es so zu machen gibt es aber besser wäre.
oder so in der Art.

oder sofern du ein wenig Zeit hast eine etwas ausführlichere Erklärung wäre natürlich nicht schlecht.

Normalisierung ist wenn in einer Tabelle und Spalte die gleichen Daten stehen was vermieden werden sollte.
wenn ich eine Tabelle "alles" aufspalte ist dieses mehr oder weniger kein doppeltes vorkommen von daten und somit schneller lesbar bei abfrage.
Oder?
also somit eine dumme frage von mir . ja. oder noch kleiner geschrieben.


---
dann würde dieses weiter gehen mit einer eindeutigen ID die ich auch in meiner Tabelle "alles" habe , also ganz viele eideutige IDs. die aber über die auswahl einer Spalte z.b Enum oder Set ,so zum versuch, zu dieser ID werden müsste.hmmm . Was ist den besser einzelne Set oder ein Enum. welches mit der eindeutigen ID verknüpft sein muss.
oder?
 
Zuletzt bearbeitet:
Werbung:
sehr schön

Als eine Gedächtnisstütze für die Grade von Abhängigkeit vom Schlüssel in den ersten drei Normalformen wird gerne folgender Spruch genannt: the key, the whole key, and nothing but the key - so help me Codd (Der Schlüssel, der ganze Schlüssel und nichts als der Schlüssel - so wahr mir Codd helfe.):
  • alle (impliziert: atomaren) Werte beziehen sich auf den Schlüssel - 1. NF
  • bei zusammengesetzten Schlüsseln beziehen sie sich jeweils auf den gesamten Schlüssel - 2. NF
  • die Werte hängen nur vom Schlüssel ab, und nicht von weiteren Werten - 3. NF
---

dieses soll ein Anfänger verstehen.

um die daten dort hinzubekommen alles schlüssel oder?

nein nein
 
Ich verstehe das was du schreibst nicht.

ich möchte mit einer Datenbank anfangen und überlege wie ich dieses am besten mache . ich kenne mich halt nicht damit aus.
Da hier was von Schnelligkeit stande habe ich halt mal gefragt.
Ich weis nicht wie ich mit dieser Datenbank am besten anfange und möchte Fehler vermeiden.
-Doppelte Daten
- oder die Abfragen aus Tabelle.
 
Zuletzt bearbeitet:
Werbung:
Ja gut. Ich weiß nicht wie wir dir helfen können. Wenn du sagt du verstehst nicht was du liest, dann können wir das doch auch schlecht ändern. Vielleicht formulierst du mal was du nicht verstehst?
 
Ich verstehe dieses mit den Schlüsseln noch nicht

ich probiere somit ein tabelle mit allem anzulegen also Tabelle "alles".

diese probiere ich nun zu spalten.

weis aber nicht wie ich dieses machen soll.

ich nehme zum beispiel ein Enum mit drei Variabeln.( deshalb Zwischenfrage mit set)

aus jeder Variabel möchte ich eine tabelle machen.

Habe Primär Schlüssel der tabelle "alles"
Tabelle ID 1 oder Tabelle ID 2 usw. müsste man doch die inhalte zuweisen können . also name , straße etc. was in der Tabelle . if Variable 1 dann.
oder aus der Variabel einen Schlüssel machen.

wie lege ich eine neue Tabelle an oder weise dieser den Schlüssel zu.


Ich bin wie gesagt Neuling.
 
MySQL :: MySQL 5.1 Referenzhandbuch :: 3.3 Eine Datenbank erzeugen und benutzen

Ansonsten wüßte ich wirklich nicht was man dir antworten sollte.

Datenbanken zu entwickeln ist eine kniffelige Sache und erfordert grundlegende Kenntnise in Normalisierung, wie man eine Struktur optimieren kann, wie joins angewendet werden und wie man feststellt wo Fehler oder Probleme in der Struktur sind. Das sind alles keine Dinge die man sich mal so eben schnell aus den Ärmeln schüttelt. Wir Wissen nicht was du mit den Daten vor hast, was sie ausdrücken sollen. Und natürlich spielt es auch eine Rolle wie groß die Datenmenge wird usw.

Das einzige was ich dir Raten kann, habe ich dir bereits gesagt, deine Struktur erfordert eine Normalisierung, d.h. kein Feld sollte doppelt vorkommen, kein Datensatz sollte überflüssige Informationen enthalten.
 
Werbung:
Apropos Datenmenge deshalb fragte ich ja ob es einen Unterschied macht wenn ich eine abgespaltene Tabelle durchsuche oder eine Tabelle "alles" in einer Abfrage.
Ich halte dieses durchsuchen irgend wie von eine Unsinnige Methode.
Meiner Meinung müsste dieses ein Programm auf eine "Html" page schreiben welche ich dann in meine Page einfüge. Sofern ich einen Datensatz verändere müsste die Page neu geschrieben werden.
Abfragen nur zum erstellen von "html" Pages.

ich dachte ,dass diese Abfrage immer nur meine untergeordnete Tabellen betreffen sollte damit dieses vielleicht schneller geht.

Vielen Dank erstmal.

Und ich versuche mich erst mal an diesen Schlüsseln und dem zuordnen von Spalten.
 
Zuletzt bearbeitet:
Datenbankoptimierung, ist wiederum eine Kunst für sich und läßt sich sicher nicht so einfach zusammen fassen wie du es versuchst. Es kommt weniger auf die Datenmenge und die Anzahl der Tabellen an, als auf die richtige Abfrage und den richtigen Indizes, ein Hilfsmittel dafür ist EXPLAIN.

Das zweite worauf du ansprichst, wäre ein Cache. Ob es sich lohnt sowas umzusetzen hängt von deiner Anwendung ab.
 
Zurück
Oben