tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von para_noid
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
204
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Maks Maks ist offline Mitglied Silber
    Registriert seit
    Nov 2010
    Ort
    Österreich
    Beiträge
    61
    Hallo Zusammen,

    Mein Problem ist folgendes:


    Ich habe eine Testdatenbank, welche ich später einmal, wenn Sie funktioniert, in eine Homepage einbauen werde.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    
    Tabelle User
     
    +---------------+----------+------+-----+---------+----------------+
    | Field         | Type     | Null | Key | Default | Extra          |
    +---------------+----------+------+-----+---------+----------------+
    | userid        | int(5)   | NO   | PRI | NULL    | auto_increment |
    | ip            | float    | YES  | MUL | NULL    |                |
    | browser       | char(20) | YES  |     | NULL    |                |
    | activity_stat | int(2)   | YES  |     | NULL    |                |
    | name          | char(50) | YES  |     | NULL    |                |
    | email         | char(50) | YES  |     | NULL    |                |
    | birthdate     | date     | YES  |     | NULL    |                |
    | location      | char(50) | YES  |     | NULL    |                |
    | last_login    | date     | YES  |     | NULL    |                |
    | twitter       | char(50) | YES  |     | NULL    |                |
    | facebook      | char(50) | YES  |     | NULL    |                |
    | soundcloud    | char(50) | YES  |     | NULL    |                |
    | googlep       | char(50) | YES  |     | NULL    |                |
    | avatar        | char(50) | YES  |     | NULL    |                |
    +---------------+----------+------+-----+---------+----------------+
     
    Tabelle IP
     
    +----------------+--------+------+-----+---------+-------+
    | Field          | Type   | Null | Key | Default | Extra |
    +----------------+--------+------+-----+---------+-------+
    | ip             | float  | NO   | PRI | NULL    |       |
    | logged_at_date | date   | YES  |     | NULL    |       |
    | logged_at_time | time   | YES  |     | NULL    |       |
    | userid         | int(5) | YES  | MUL | NULL    |       |
    +----------------+--------+------+-----+---------+-------+
     
    Tabelle preferences
     
    +--------------+----------+------+-----+---------+-------+
    | Field        | Type     | Null | Key | Default | Extra |
    +--------------+----------+------+-----+---------+-------+
    | userid       | int(5)   | YES  | MUL | NULL    |       |
    | style        | char(20) | YES  |     | NULL    |       |
    | notification | int(1)   | YES  |     | NULL    |       |
    | visibility   | int(1)   | YES  |     | NULL    |       |
    +--------------+----------+------+-----+---------+-------+
     
    Tabelle post
     
    +-----------+-----------+------+-----+---------+----------------+
    | Field     | Type      | Null | Key | Default | Extra          |
    +-----------+-----------+------+-----+---------+----------------+
    | userid    | int(5)    | YES  | MUL | NULL    |                |
    | pid       | int(5)    | NO   | PRI | NULL    | auto_increment |
    | title     | char(250) | YES  |     | NULL    |                |
    | content   | text      | YES  |     | NULL    |                |
    | post_date | date      | YES  |     | NULL    |                |
    | post_time | time      | YES  |     | NULL    |                |
    +-----------+-----------+------+-----+---------+----------------+

    Meine Überlegungen:

    Nachdem sich die IP Adresse des Users hin und wieder ändern kann verlagere ich diese in eine andere Datenbank welche dann quasi als History für mich dient, wo ich nachsehen kann mit welchen IP Adressen er insgesamt schon on war.

    Nachdem auch ein User mehrere Posts erstellen kann habe ich einen ForeignKey auf tabelle post mit dem feld userid gelegt.

    Jetzt habe ich einen User in der Tabelle user angelegt, dieser hat automatisch die Userid 1 durch das AUTO_INCREMENT bekommen.

    Demnach dürfte ich ja in anderen Tabellen welche auf diese mit Userid refernzieren keine anderen Userid´s anlegen ausser 1.

    Also habe ich bei Tabelle ip einen User mit der Userid 10 angelegt. Komischerweise lässt er mir den auch ohne weiteres anlegen!


    Vorher dachte ich mir dass das sicher in den Warnings stehen würde, doch da habe ich mich geirrt.

    Kann mir da wer einen Tipp geben wieso das bei mir anders ist, bzw. was ich falsch gemacht habe?

    Danke

    lg Maks
     

  2. #2
    Avatar von para_noid
    para_noid para_noid ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    144
    Demnach dürfte ich ja in anderen Tabellen welche auf diese mit Userid refernzieren keine anderen Userid´s anlegen ausser 1.
    Wenn du das erreichen willst, musst du InnoDB verwenden.

    InnoDB weist jede INSERT- oder UPDATE-Operation zurück, die versucht, einen Fremdschlüsselwert in einer Kindtabelle anzulegen, wenn kein passender Schlüsselwert in der Elterntabelle vorhanden ist.
    http://dev.mysql.com/doc/refman/5.1/...nstraints.html

    Hilft dir das weiter?
     

  3. #3
    Maks Maks ist offline Mitglied Silber
    Registriert seit
    Nov 2010
    Ort
    Österreich
    Beiträge
    61
    Hallo,

    Erreiche ich das nur mit InnoDB?

    Danke für den Tipp, komisch nur dass ich es früher in der Schule immer so gemacht habe und ich konnte auch keinen anderen Wert in der Kindtabelle anlegen der nicht in der Elterntabelle existiert .

    Ich dachte mir dass Mysql die referentielle Integrität schon automatisch anwendet. Also wie eben oben beschrieben, dass wenn ein Fremdschlüssel (kundenid= 10) exisitert dieser auch in der Primärschlüsseltabelle zu finden ist.


    Kann mich auch täuschen!

    lg Maks
    Geändert von Maks (23.10.11 um 18:06 Uhr)
     

  4. #4
    Avatar von para_noid
    para_noid para_noid ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    144
    Erreiche ich das nur mit InnoDB?
    Kann ich dir so genau nicht sagen; ich arbeite überwiegend mit MyISAM und da trifft das definitiv nicht zu.

    Ich hab hier [http://www.stefan-reimers.de/blog/my...-in-myisam.php] was Interessantes dazu gefunden: für MyISAM kannst du das jetzt nur frickelmäßig über Trigger erreichen, ab MySQL 6 soll es die Integrität für alle Engines geben. Der Kommentar darunter gibt dir noch googlebare Wörter SIGNAL und RESIGNAL, vielleicht erreichst du damit was. Da hört aber mein Verständnis auf.

    lg
    Geändert von para_noid (23.10.11 um 18:45 Uhr) Grund: link falsch
    Maks bedankt sich. 

Ähnliche Themen

  1. Mailserver, kann mich mit angelegt Benutzer nicht einloogen
    Von Fasibio im Forum Hosting & Webserver
    Antworten: 1
    Letzter Beitrag: 30.07.11, 17:45
  2. Antworten: 5
    Letzter Beitrag: 25.12.10, 19:42
  3. Antworten: 2
    Letzter Beitrag: 07.02.07, 17:36
  4. Antworten: 5
    Letzter Beitrag: 05.07.05, 13:53
  5. Automatische Userid vergeben (Formular)
    Von icefire im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 05.11.03, 17:18