[SQL]Is er een goede oplossing?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mr_taipan
  • Registratie: Februari 2002
  • Laatst online: 03-12-2024
Hallo,

Ik heb een uitdaging met een heel simpel sql schema.

Afbeeldingslocatie: http://i55.tinypic.com/24awvex.jpg

Het moet mogelijk zijn om een File een Category te geven zonder SubCategory maar als er een SubCategory is moet de FK1 CategoryID in File en SubCategory wel het zelfde zijn. Is er in MS SQL een constrain die daar voor kan zorgen?

Of zou het schema zo aangepast kunnen worden het dat het niet anders kan worden opgeslagen?

Wat ik al geprobeerd heb is om alleen FK2 SubCategoryID in File op te slaan en FK1 te droppen. Maar dan moet er een lege SubCategory zijn om het mogelijk te maken alleen een Category te kiezen.

Thx

Acties:
  • 0 Henk 'm!

  • MrTinux
  • Registratie: December 2000
  • Laatst online: 12:36

MrTinux

Terug van nooit weggeweest.

Ik zou de tabellen Category en Subcategory mergen tot 1 tabel "Category"*) waarbij je deze een extra (nullable) kolom "ParentCategoryId" geeft met een FK naar CategoryId.

In deze nieuwe tabel stop je zowel alle hoofd- als subcategorieën. Hoofdcategorieën krijgen een waarde (null) in de kolom ParentCategoryId, subcategorieën vinden hier de verwijzing naar hun supercategorie. In theorie kan je dan ook meer dan 1 niveau diep gaan.

Vanuit je file-tabel hoef je dan maar 1 verwijzing op te nemen, en kan je daarmee zowel naar een hoofd- als subcategorie verwijzen.

*) of eigenlijk "Categories", maar da's een voorkeur en eeuwige discussiekwestie ;)

[ Voor 8% gewijzigd door MrTinux op 15-12-2010 09:34 ]

"Hij doet 't niet" = onvolledige informatie


Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
Dit datamodel is fout, te sterke koppeling tussen de tabellen. Ieder categorie kan ook een subcategorie zijn, deze heeft dan een parent. Zonder parent is het blijkbaar geen subcategorie, geen enkel probleem. File verwijst gewoon naar de juiste categorie, en mocht dit een subcategorie zijn, dan kun je aan de hand daarvan dus de categorie weer terugvinden. De tabel subcategory kan dus weg en de tabel category heeft nog een kolom met parent_id nodig die een foreign key heeft naar het id in category.

Category:
id PK
id_parent FK naar de PK id in de tabel Category

File:
id
id_category FK naar de kolom id in de tabel Category.

Edit:
Ik ben dus niet de enige die er zo over denkt

[ Voor 5% gewijzigd door cariolive23 op 15-12-2010 09:38 ]


Acties:
  • 0 Henk 'm!

  • mr_taipan
  • Registratie: Februari 2002
  • Laatst online: 03-12-2024
Super bedankt!

Dit was precies het wat ik zocht!

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 11-09 20:27

Matis

Rubber Rocket

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
Niet nodig, dat is voor MySQL maar SQL Server kent recursieve queries waardoor hiërarchie eenvoudiger uit de database is te trekken:
http://www.eggheadcafe.co...recursion_with_clause.asp
Pagina: 1