Vorhandene Datenbank um eine neue Tabelle erweitern

messmar

Erfahrenes Mitglied
Hallo,

ich habe eine DB mit ner einzigen Tabelle erstellt und ich möchte sie jetzt um eine weitere Tabelle erweitern.

Die vorhandene Tabelle wurde folgendermaßen erstellt und es funkt. soweit:

Code:

HTML:
create table users (
  id int not null,
  first_name varchar(32) not null,
  last_name varchar(32) not null,
  date_created timestamp default now(),
  is_admin boolean,
  points int,
  primary key (id)
);

Ich möchte jetzt eine weitere Tabellle erstellen, wo ich zwei Spalten habe:
HTML:
userId, message

damit möchte ich erreichen, dass Nachtricht jedes User (in der Tabelle users) extra in der zweiten Tabelle (z.B. messages) gespeichert wird. Am Ande möchte ich nen Lookup ausführen welche Nachricht welchem User gehört anhand von uid.

Wie wäre die SQL Statement um die zweite Tabelle erstellen zu können und sie mit: users zu verknüpfen?

Vielen Dank
Messmar
 
Hi

es geht also darum, dass Nachrichten nur zu einer gültigen User-ID existieren können, und beim Löschen eines Users alle Nachrichten mit verschwinden? Weil, wenn das egal ist oder durch ein externes Programm verwaltet wird, wäre eine Verknüpfung nicht zwingend notwending.

Um welches DBMS geht es?
 
Code:
create table messages(
  `uid_from` INT NOT NULL,
  `uid_to` INT NOT NULL,
  `message` TEXT NULL,
CONSTRAINT `fk_msg_from`
  FOREIGN KEY (`uid_from`)
  REFERENCES `users` (`id`)
  ON DELETE CASCADE
  ON UPDATE CASCADE,
CONSTRAINT `fk_msg_to`
  FOREIGN KEY (`uid_to`)
  REFERENCES `users` (`id`)
  ON DELETE CASCADE
  ON UPDATE CASCADE,
);

so schnell schnell :-D
 
Guten Morgen!

erstmal Danke für das Feedback.

es geht also darum, dass Nachrichten nur zu einer gültigen User-ID existieren können, und beim Löschen eines Users alle Nachrichten mit verschwinden?

Antwort: Ja, exakt.

Und es geht um Postgres 9.3. Die Daten werden über eine REST API (Jersey) verwaltet, wo die Members/Users in die DB gespeichert (via HTML Formular).

Messages jedes Users sollten über eine Text-Area in der zweiten Tabelle: messages (die ich noch nicht habe) gespeichert werden. Alles andere Daten (firstName, lastName, etc.) gehen in der ersten Tabelle (users).

Danke & Gruß
Messmar
 
Zuletzt bearbeitet:
@xloouch:

wärst Du bittte so nett und erklärst Du vielleicht einiges in der Statement, die Du gepostet hast :)


Ich versuche Code nicht nur zu kopieren und/oder zu immitieren.. ich lege viel Wert darauf ihn zu verstehen.
Die neue/zweite Tabelle sollte nur zwei Spalten enthalten: id (verknüpfung zu users) und message.


Die zwei Zeilen hier verstehe ich nicht ganz :

HTML:
...
uid_from` INT NOT NULL,  
`uid_to` INT NOT NULL,
...

Danke!
Messmar
 
HI Messmar.

Wenn du eine Nachricht von a -> b versenden willst, brauchst du einen Absender und einen Empfänger.

- uid_from ist die User-ID des versendenden Users.
- uid_to ist die User-ID des empfangenden Users.

die Constraints sind die jeweiligen Verknüpfungen zu dem entsprechenden User.

Reichen dir diese Erläuterungen?

Grüsse

***Anmerkung***

Wenn ich dich wäre, würde ich den Int mit der Grösse 11 und unsigned setzen. Dann hast du 4Mia User theroetisch verfügbar :-D
 
Zuletzt bearbeitet:
Nur so als Frage, soll es auch Gruppen-Unterhaltungen geben, oder nur Person <-> Person?

In der Tat habe ich das vor, aber eher in einem vorgeschrittenen Stadium.. bin grade am Anfang der App so zusagen.
Es sollte/wird am Ende folgendes geben:

HTML:
userId, message/messageId, comment/commentId, userProfile

Vielen Dank für das Mitdenken! Die referenzen schaue ich mir gleich an.

Grüße
 
Zurück