php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.01.2012, 13:19  
Neuer Benutzer
 
Registriert seit: 12.01.2012
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
maluma befindet sich auf einem aufstrebenden Ast
Standard MySQL - Primary Key über zwei Spalten: andersrum nicht erlauben

Hey,

ich habe eine Tabelle mit nur zwei Spalten für eine User-Beziehung.
Beide Spalten sind Primary Keys.

Wenn jetzt A | B eingetragen wurde, würde ich gerne verhindern, dass B | A eingetragen werden darf. Ist das bei MySQL möglich?

Grüße
Maluma
maluma ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.01.2012, 16:32  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

geht vielleicht per stored procedure - aber ich sehe das eher in der Anwendungslogik ...

wenn du echt nicht willst , dass die werte aus der 2ten Spalte in der ersten auftauchen . dann musst du wohl vorher mal mit Select nachschauen die üblichen SQL-Einschränkungen wie unique wirken leider nur innerhalb der gleichen Spalte - und auch ein 2 spaltiger Primärschlüssel lässt sich nicht "per se" so aufbohren
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 12.01.2012, 20:31  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Du hast (mindestens) einen Fehler in der Datenstruktur. Erzähl doch mal, worum es geht.
achtelpetit ist offline   Mit Zitat antworten
Alt 13.01.2012, 11:59  
Neuer Benutzer
 
Registriert seit: 12.01.2012
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
maluma befindet sich auf einem aufstrebenden Ast
Standard

Danke für eure Antworten.

Zitat:
geht vielleicht per stored procedure - aber ich sehe das eher in der Anwendungslogik ...
Stored procedure schau ich mir mal an, danke für den Hinweis. Ich denke auch, dass ich die Anwendung das überprüfen lasse. Wolllte nur wissen, ob MySql das vielleicht übernehmen kann.


Zitat:
Du hast (mindestens) einen Fehler in der Datenstruktur. Erzähl doch mal, worum es geht.
Es wird eine Freundschaftsgradanzeige, so wie bei Xing. Da ich nur die Tabelle mit den direkten Freundschaften habe und darauf den All-Pair-Shortest-Path-Algorithmus anwenden werde, sehe ich kaum Fehlerpotential für die Datenstruktur.
Bei der Auseinandersetzung mit dem Algorithmus fällt mir nur auf, dass es eventuell perfomanter sein könnte, die Beziehung doch in beide Richtungen zu speichern.
maluma ist offline   Mit Zitat antworten
Alt 13.01.2012, 15:48  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von maluma Beitrag anzeigen
Hey,

ich habe eine Tabelle mit nur zwei Spalten für eine User-Beziehung.
Beide Spalten sind Primary Keys.

Wenn jetzt A | B eingetragen wurde, würde ich gerne verhindern, dass B | A eingetragen werden darf. Ist das bei MySQL möglich?

Grüße
Maluma
Ob es MySQL kann, weiß ich nicht, in PG geht dies:

Code:
test=# create table freunde (id1 int, id2 int, check (id1!=id2));
CREATE TABLE
test=*# create unique index idx_freunde on freunde (greatest(id1, id2), least(id1, id2));
CREATE INDEX
test=*# insert into freunde values (1,3);
INSERT 0 1
test=*# insert into freunde values (4,5);
INSERT 0 1
test=*# insert into freunde values (3,1);
ERROR:  duplicate key value violates unique constraint "idx_freunde"
DETAIL:  Key ((GREATEST(id1, id2)), (LEAST(id1, id2)))=(3, 1) already exists.
akretschmer ist offline   Mit Zitat antworten
Alt 13.01.2012, 20:47  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
sehe ich kaum Fehlerpotential für die Datenstruktur.
Die Sache ist ganz einfach: wenn die Reihenfolge der Daten in einer Tabelle für die Datenintegrität wichtig ist, dann ist der Wurm drin.
Das kann ich sagen, obwohl ich nicht weiß, was eine "Freundschaftsgradanzeige" ist.
achtelpetit ist offline   Mit Zitat antworten
Alt 13.01.2012, 22:45  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von achtelpetit Beitrag anzeigen
Die Sache ist ganz einfach: wenn die Reihenfolge der Daten in einer Tabelle für die Datenintegrität wichtig ist, dann ist der Wurm drin.
Es geht nicht um die Reihenfolge, sondern um ein aus 2 Elementen bestehendes Tupel.

Zitat:
Das kann ich sagen, obwohl ich nicht weiß, was eine "Freundschaftsgradanzeige" ist.
Wenn man keine Ahnung hat, ...

Andreas
akretschmer ist offline   Mit Zitat antworten
Alt 13.01.2012, 22:53  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Auch wenn das die Frage nicht beantwortet - ist eine echte Freundschaft nicht ohenhin erst gegeben wenn A->B als Freund einträgt und andersherum. Anderenfalls ist das doch eher eine Freundschaftsanfrage oder ein Followermodell?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 13.01.2012, 23:20  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

@akretschmer
Zitat:
Es geht nicht um die Reihenfolge
Ich habe mich falsch ausgedrückt. Es geht um die Abhängigkeit eines Wertes in einem Feld vom Wert eines anderen Feldes. Aber eine solche Abhängigkeit ist ein Verstoß gegen die Normalisierungsregeln (2. Normalform).

Zitat:
Wenn man keine Ahnung hat, ...
Stimmt, ich hab' keine Ahnung von "Freundschaftsgradanzeige".

Ich kann jetzt vermuten, was in den besagten
Zitat:
zwei Spalten für eine User-Beziehung
gespeichert ist. (Der Verdacht auf Wiederholungsspalten drängt sich auf.) Ich ziehe aber eine Erläuterung von Maluma vor. Der muß es schließlich wissen.
Bleib' höflich, kostet doch nix.
achtelpetit ist offline   Mit Zitat antworten
Alt 13.01.2012, 23:23  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Der Verdacht auf Wiederholungsspalten drängt sich auf.
Nö. ID referenziert ID um eine Relation abzubilden.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySql Suche über mehere Spalten und dann ausgeben ... fabi288 PHP Einsteiger 4 29.04.2011 20:34
MySQL - Spalten in WHERE Klausel N4bla Datenbanken 2 17.01.2011 15:16
[Erledigt] Summation über Unterabfragen - Mysql jume Datenbanken 20 30.05.2010 09:58
[Erledigt] MySQL count(distinct) über mehrere Spalten mit GROUP BY Problem DJwebdesign Datenbanken 6 06.03.2010 16:05
MySQL Konsole und Umlaute unter Windows [LÖSUNG] f4ckm5 Datenbanken 8 30.03.2009 22:10
MySQL Abfrage nach mehreen Spalten und mit verschiedenen Bedingungen ketchup PHP Tipps 2009 1 19.03.2009 23:21
Lerne Grundlagen | Quellensammlung cycap PHP Einsteiger 0 12.11.2008 16:23
Index über 2 Spalten, unique mAy^daY Datenbanken 5 09.08.2007 16:02
Verbindung HTTP-Server MySQL Server über php - genaueres netti Datenbanken 5 11.06.2007 19:04
2 MySQL Spalten suchen und nach Relevanz ordnen!? nsane Datenbanken 4 19.10.2005 12:03
[Erledigt] Problem mit mySQL Datenbanken 7 27.09.2005 12:06
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
suche über zwei oder mehr spalten Datenbanken 1 28.11.2004 09:51
[Erledigt] Auto Increment über 2 Spalten Datenbanken 2 21.09.2004 19:52
fragen zu einem Login und Zeit blabla über MySQL PHP Tipps 2004 10 12.09.2004 15:21

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql primary key, mysql unique mehrere spalten, mysql primary, zwei spalten ein primärschlüssel, mysql primary key aus mehreren spalten, mysql nach primärschlüssel fragen, mysql primary key über zwei spalten, zwei spalten als primärschlüssel sql 2008, mysql 2 spalten als primary, mysql primärschlüssel, php my sql spaltenüberschriften als buttons, mysql primärschlüssel mehrere spalten ändern, primärschlüssel mehrere felder, mysql primary key 2 felder, mysql 5 primary key 2 felder, mysql primärschlüssel über mehrere felder durchsuchen, mehrere primary keys, mysql primary key mehrere, primary aus zwei feldern, mysql key über 2 spalten select

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:34 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum