Toon posts:

[MySQL] relaties afdwingen en niet null-able fields

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

ik heb een MySQL server tot mijn beschikking waar ik een aantal tabellen heb gedonderd. Ik maak relaties aan tussen de verschillende tabellen, gewoon met script dat ik normaal ook voor MS SQL Server gebruik.

Het lulllige is alleen dat als ik de code genereer mbv MySQL Dezign of MDB2MySQL, op beide manieren werkt het niet. Ik kan in een koppeltabel nog steeds alle values invullen ipv dat er gekeken wordt of die values wel bestaan in de tabel waar de foreign key op uit komt.

Iets anders vaags is dat ik een veld op NIET null heb gezet, ik kan er echter gewoon null (nix nakkes nada) invullen...
Afbeeldingslocatie: http://www.pomtiedom.nl/tweak_sql.jpg

Hierboven is te zien dat de value NIET null mag zijn. Is er nu iets dat ik moet instellen of weet ik veel wat? Ik wil dus dat m'n relaties afgedwongen worden en dat ik hier geen null in kan vullen!

Any (serious) help is greatly appreciated!

[ Voor 3% gewijzigd door Verwijderd op 16-12-2002 11:22 ]


  • Le Mol
  • Registratie: April 2000
  • Niet online
Je MySQL heeft nog geen forgein key support

http://www.mysql.com/doc/en/SEC448.html

[ Voor 47% gewijzigd door Le Mol op 16-12-2002 11:37 ]

Logic brings you from a to b, your imagination can bring you anywhere


Verwijderd

Topicstarter
Le Mol schreef op 16 december 2002 @ 11:33:
(Je) MySQL heeft nog geen forgein key support
Dus ik maak gebruik van een dbms dat niet met relaties tussen tabellen om kan gaan?

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Le Mol schreef op 16 December 2002 @ 11:33:
(Je) MySQL heeft nog geen forgein key support
http://www.mysql.com/doc/en/SEC448.html:
Starting from version 3.23.43b InnoDB features foreign key constraints. InnoDB is the first MySQL table type which allows you to define foreign key constraints to guard the integrity of your data.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Verwijderd schreef op 16 december 2002 @ 11:34:
[...]


Dus ik maak gebruik van een dbms dat niet met relaties tussen tabellen om kan gaan?

stimmt ;)

neat isn't it ;)

.edit: Nielsz: NOG niet ;)

[ Voor 6% gewijzigd door D2k op 16-12-2002 11:35 ]

Doet iets met Cloud (MS/IBM)


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Verwijderd schreef op 16 december 2002 @ 11:34:
[...]


Dus ik maak gebruik van een dbms dat niet met relaties tussen tabellen om kan gaan?
MySQL != DBMS, maar die discussie heoven we vandaag niet te voeren ;)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Nielsz schreef op 16 December 2002 @ 11:35:
[...]


MySQL != DBMS, maar die discussie heoven we vandaag niet te voeren ;)

wel DBMS geen RDBMS ;) </purist>

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
D2k schreef op 16 december 2002 @ 11:35:

[...]

stimmt ;)

neat isn't it ;)

.edit: Nielsz: NOG niet ;)
Hoezo is iedereen dan zo gigantisch enthousiast over zo'n DBMS dat geen DBMS is? Dit is toch wel redelijk essentieel voor een relationele database, of is het op een andere manier af te dwingen?

Verwijderd

Topicstarter
D2k schreef op 16 december 2002 @ 11:36:

[...]

wel DBMS geen RDBMS ;) </purist>
ok, geen rDBMS, dat zeg het al... :X

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Verwijderd schreef op 16 december 2002 @ 11:37:
[...]


Hoezo is iedereen dan zo gigantisch enthousiast over zo'n DBMS dat geen DBMS is? Dit is toch wel redelijk essentieel voor een relationele database, of is het op een andere manier af te dwingen?

the magic word: gratis

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
Verwijderd schreef op 16 december 2002 @ 11:37:
[...]


ok, geen rDBMS, dat zeg het al... :X
vraag ik me nog wel ff af hoe dat met zo'n nullabel veld zit, hoe is dat mogelijk?

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
D2k schreef op 16 december 2002 @ 11:35:

[...]


.edit: Nielsz: NOG niet ;)
http://www.mysql.com/downloads/index.html:
MySQL 3.23 -- Stable release (recommended) latest version is 3.23.53
en dat zit er vanaf 3.23.43 in?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Nielsz schreef op 16 December 2002 @ 11:38:
[...]


[...]

en dat zit er vanaf 3.23.43 in?

moet je daarvoor niet apart innodb support meebakken?

Doet iets met Cloud (MS/IBM)


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 16 December 2002 @ 11:34:
Dus ik maak gebruik van een dbms dat niet met relaties tussen tabellen om kan gaan?

Dat is een van de zwakke kanten van mysql ja. Het kan niet echt goed met relaties tussen tabellen omgaan, tenzij je innodb gebruikt. Maar zelfs dan is het nog niet je-van-het.

Btw, opzich wel raar dat je eerst iets gaat ontwikkelen en er dan pas achterkomt dat het niet kan. Over het algemeen kan je dat beter proberen om te draaien ;)
't Is zelfs een rdbms aangezien je relaties aan kan geven/gebruiken. Hoeveel het van het 'dit is nodig om een rdbms te zijn'-lijstje implementeert is weer wat anders. Maar aangezien je relaties in je sql-code kan toepassen, kan je het een rdbms noemen.
Verwijderd schreef op 16 December 2002 @ 11:37:
Hoezo is iedereen dan zo gigantisch enthousiast over zo'n DBMS dat geen DBMS is? Dit is toch wel redelijk essentieel voor een relationele database, of is het op een andere manier af te dwingen?
Het is snel met simpele queries (wat het gros van de queries is). Het is simpel te beheren en in te stellen. Het is bijna altijd gratis. Het mist een aantal functies waarvan veel mensen denken dat ze het niet nodig hebben, of het zelfs echt niet nodig voor ze is.

Magoed, als je een "echte" (gratis) RDBMS wilt moet je voor postgresql of evt sapdb of interbase gaan.
Je kan alleen in je programma code proberen de relaties af te dwingen, verder is het niet mogelijk binnen mysql, hooguit dus een beetje als je innodb tabellen gebruikt.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 16 december 2002 @ 11:38:
vraag ik me nog wel ff af hoe dat met zo'n nullabel veld zit, hoe is dat mogelijk?

Ik heb een virtueel lijstje van "fouten van mysql" en die staat er vrij hoog in, hetzelfde geld voor "'a' = 'A' == true" en het gemis van subqueries, triggers, functions, procedures, foreign keys en nog wel meer dingen :)

Verwijderd

Topicstarter
ACM schreef op 16 December 2002 @ 11:42:

[...]

Dat is een van de zwakke kanten van mysql ja. Het kan niet echt goed met relaties tussen tabellen omgaan, tenzij je innodb gebruikt. Maar zelfs dan is het nog niet je-van-het.

Btw, opzich wel raar dat je eerst iets gaat ontwikkelen en er dan pas achterkomt dat het niet kan. Over het algemeen kan je dat beter proberen om te draaien ;)


[...]

't Is zelfs een rdbms aangezien je relaties aan kan geven/gebruiken. Hoeveel het van het 'dit is nodig om een rdbms te zijn'-lijstje implementeert is weer wat anders. Maar aangezien je relaties in je sql-code kan toepassen, kan je het een rdbms noemen.

[...]

Het is snel met simpele queries (wat het gros van de queries is). Het is simpel te beheren en in te stellen. Het is bijna altijd gratis. Het mist een aantal functies waarvan veel mensen denken dat ze het niet nodig hebben, of het zelfs echt niet nodig voor ze is.

Magoed, als je een "echte" (gratis) RDBMS wilt moet je voor postgresql of evt sapdb of interbase gaan.
Je kan alleen in je programma code proberen de relaties af te dwingen, verder is het niet mogelijk binnen mysql, hooguit dus een beetje als je innodb tabellen gebruikt.
Ok, heel duidelijk, onwijs bedankt, vroeg ik me nu dus nog ff af hoe het zat met dat nullable field... Weet je misschien hoe het kan dat daar gewoon null in kan?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 16 December 2002 @ 11:44:
Ok, heel duidelijk, onwijs bedankt, vroeg ik me nu dus nog ff af hoe het zat met dat nullable field... Weet je misschien hoe het kan dat daar gewoon null in kan?

Dat is, imho, een gigantische bug in mysql. Maar het is wel, volgens hun, de bedoeling dat dat gebeurd.

Een veld heeft _altijd_ een default in mysql en daardoor, als je null of niks opgeeft, _altijd_ een waarde.
Dit is, imho, enorm vies, onhandig en fout. Magoed... wie ben ik? :P

Het enige verschil tussen null en not null velden is dat het "verzuimen van een default" ervoor zorgt dat ie in het eerste geval null is en in het andere geval 0/lege string/etc...

[ Voor 14% gewijzigd door ACM op 16-12-2002 11:50 ]


Verwijderd

Topicstarter
ACM schreef op 16 December 2002 @ 11:48:

[...]

Dat is, imho, een gigantische bug in mysql. Maar het is wel, volgens hun, de bedoeling dat dat gebeurd.

Een veld heeft _altijd_ een default in mysql en daardoor, als je null of niks opgeeft, _altijd_ een waarde.
Dit is, imho, enorm vies, onhandig en fout. Magoed... wie ben ik? :P
iemand die meer van mysql afweet dan mij :)

tnx voor je kennis, weet ik weer waar ik aan toe ben...

een goed rdbms :)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k



ACM, the man with the 1000point mysql rant-list ;)

Doet iets met Cloud (MS/IBM)


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier


Als je dat nodig hebt moet je zeker eens naar postgresql kijken :)

Die is nog "gratiser" dan mysql :)
(iets) slomer met simpele queries, maar (veel) sneller met complexe queries. Maar kent wel het gros van de belangrijke features die mysql mist tov echte RDBMS en is veel beter te bedienen imho.

Verwijderd

Topicstarter
ACM schreef op 16 december 2002 @ 11:52:

[...]

Als je dat nodig hebt moet je zeker eens naar postgresql kijken :)

Die is nog "gratiser" dan mysql :)
(iets) slomer met simpele queries, maar (veel) sneller met complexe queries. Maar kent wel het gros van de belangrijke features die mysql mist tov echte RDBMS en is veel beter te bedienen imho.
Nee, not an option. Ik moet het maken met MySQL vanwege de kosten en de beschikbaarheid. Kan ook met MS Acces gaan werken, maar dat vertrouw ik niet concurrent en aantal users...

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 16 december 2002 @ 11:54:
Nee, not an option. Ik moet het maken met MySQL vanwege de kosten en de beschikbaarheid. Kan ook met MS Acces gaan werken, maar dat vertrouw ik niet concurrent en aantal users...

Kosten van mysql en postgresql zijn gelijk (gratis software).
Kosten voor ontwikkelen in mysql en postgresql zijn gelijk (sterker nog, je lijkt ervaring te hebben met geavanceerdere RDBMS-en en dan is postgresql minder moeite om te gebruiken).

Stabiliteit van postgres is hoger, volgens zeggen, maar ik denk dat dat tegenwoordig wel redelijk gelijk ligt.
Sinds er een native win32 versie van postgresql bestaat, is de beschikbaarheid voor software platforms ook gelijk :) Wel is die win32 versie nog beta.

[ Voor 9% gewijzigd door ACM op 16-12-2002 12:00 ]


Verwijderd

Topicstarter
ACM schreef op 16 december 2002 @ 11:57:

[...]

Kosten van mysql en postgresql zijn gelijk (gratis software).
Kosten voor ontwikkelen in mysql en postgresql zijn gelijk (sterker nog, je lijkt ervaring te hebben met geavanceerdere RDBMS-en en dan is postgresql minder moeite om te gebruiken).

Stabiliteit van postgres is hoger, volgens zeggen, maar ik denk dat dat tegenwoordig wel redelijk gelijk ligt.
Sinds er een native win32 versie van postgresql bestaat, is de beschikbaarheid voor software platforms ook gelijk :) Wel is die win32 versie nog beta.
Maar PostgresSQL moet wel ergens gehost worden, en dat is het probleem... Het gaat om een internetapplicatie en ik heb daar nu bij het hostingpakket een mysql db voor. Dat gaat opzich prima (en snel!). Aangezien we een behoorlijk strakke deadline hebben ga ik hiermee door.
Pagina: 1