این دیاگرام من یه راه حله . اما بهترین راه حل اینه که اینجوری موارد و بده برات طراحی کنن . بگو با مستندات و کوئری های مربوطه بهت تحویل بدن . چون در همین کار شما نیاز های مختلفی برات بعدا به وجود میاد که باید مدام روش کار کنی . اما دیاگرام :
ER.jpg
یه جدول در نظر می گیریم به نام Location که این خودش می تونه انواعی رو داشته باشه . مثل استان , شهر , بخش , روستا و ... ما نوع ها رو میذاریم توی یه جدول دیگه . موقع درج درج در جدول Location مثلا مرودشت , نوعش رو هم مشخص می کنیم و میگیم این شهرستان هست .
LDiagram.jpg
هر Location خودش می تونه زیر مجموعه یه Location دیگه باشه . ما اسم جدولش و میذاریم Subset . که دو فیلد داره و هر دوهم به جدول Location ارجاع دارند .
در جدول Location داریم ( 1: شیراز , 2: شهر شیراز, 3: داراب, 4:مرودشت, 5: فیروز آباد و ... )هر Location که داریم در اینجا اضافه می کنیم به همراه کد نوع . مثلا شیراز کد نوع میشه 1 . بعد در جدول LocationType کد 1 استان هست .
Subset.jpg
میشه اینجوری پر کرد . مثلا Location 2 یعنی کد شهر شیراز ( من در جدول Location اینجوری گذاشتم ) . زیر مجموعه هاش شده 3 و 4 و 5 . و بعد میشه Query گرفت که زیر مجموعه های شیراز کدام ها هستند ؟
SELECT L.LocationName
FROM Location L
JOIN Subset S
ON L.LocationId = S.LocationSubsetId
WHERE S.LocationId = 2
خروجی : داراب , مرودشت , شیراز .