طراحی ساختار db


#1

سلام دوستان
برای یادگیری طراحی پایگاه داده چه کار باید بکنم؟ دقیقا دنبال چه آموزشی باید بگردم؟
مثلا من الآن توی یه پروژه که با جنگو دارم انجام میدم نیاز دارم به این که کاربرا موقعیتشون رو انتخاب کنن که درواقع چندین dropdown زیر مجموعه ای هست
یعنی مثلا اول ایران انتخاب میشه بعدی استان ها بعدی شهر ها و در نهایت روستا های اون شهر
و دقیقا نمیدونم چه جور ساختاری رو باید ایجاد کنم برای همیچین چیزی
موارد دیگه ای هم هست که ساختارشو بلد نیستم
بحث کد زدن نیست اگه یکی روی یه کاغذ برام ساختار رو رسم کنه میتونم توی جنگو پیاده سازی کنم!


#2

System analysis and design


#3


این کتاب رو بخون در نوع خودش بی نظیر هست بنظر من ، حجم کتاب خیلی کمه ولی ساده توضیح داده که هر ابزاری هر نوع پایگاه داده ای به چه درد میخوره و کی باید ازش استفاده کرد،پشیمون نمیشی از خوندنش و تو ذهنت جرقه برای مطالعه خیلی از مطالب میزنه( به نویسنده هم اصلا ایمیل و … نزن انقدر باهات حرف میزنه تا قانع کنه بقیه کتاب هاشو هم بخری :smile: :smile:)


#4

#5

من بخش هایی از این کتاب خوندم بعد فهمیدم اصلا هیچی بارم نیست :sweat_smile: شدیدا این کتاب پیشنهاد می شه. یکی از اولیت های خودم خوندن همین کتاب و اتمامشه. قبلا سام عزیز و دوستان این رو معرفی کرده بودن

“SQL Queries for Mere Mortals®: A Hands-On Guide to Data Manipulation in SQL”. Apple Books.

تو لیستم دیدم قبلا داخل همین انجمن بجز کتابی که سام عزیز معرفی کرده است کتاب بالا و همینطور یک کتاب دیگه به نام

“SQL and Relational Theory
How to Write Accurate SQL Code
THIRD EDITION

C. J. Date”

هم هست.


#6

مگه نه اینکه وقتی از django استفاده میکنیم دیگه کاری با database ها نداریم؟ اگه اشتباه نکنم کافیه دیاگرام کلاس ها رو رسم کنیم، بعد اونا رو به صورت کد پایتون تو فایل models.py پیاده کنیم، نه؟ طراحی پایگاه داده به طور کلی چی هست، کی و چرا لازم میشه؟


#7

framework فقط یک سری ابزار داره که کار با database راحت میکنه
مدل کردن صحیح database و دانش از ساختار داده بسیار ضروری هستش
چون درستی و نادرستی برنامه شما خیلی به مدل database متکیه
framework برای شما فکر نمیکنه


#8

من فقط یه نکته اضافه کنم که خیلی خوبه علاوه بر دیتا بیس های relational یه نگاهی به سایر انواع دیتا بیس ها بیندازین. مخصوصا دیتا مدلشون خیلی می تونه ذهنتون رو باز کنه و باعث بشه خلاقانه تر فکر کنین در این زمینه


#9

به نظر من این بهترین راهه:
یدونه model درست کن که توش قراره موقعیت ها قرار بگیره

توی این جدول میتونه هم کشور هم شهر هم… قرار بگیره

یک فیلد داشته باش به نام name که اسم اوم محل قرار میگیره

یک فیلد هم داشته باش به نام parent که وصل میشه به لایه بالاترش(مثلا اگر تهران هست، parent اش اشاره میکنه به کشور ایران و کشور ها هم parent شون None هست چون به چیزی وابسته نیستن)

یک فیلد داشته باش به نام type که نوع اون رو مشخص میکنه مثلا “کشور” یا “شهر” یا “روستا” یا…

بعد توی اون صفحه، اول لیست کشور هارو بیار. وقتی کاربر کشوری رو انتخاب کرد، ی ajax بزن و شهر هاشو بگیر، وقتی کاربر شهرشو انتخاب کرد ی ajax بزن اگر روستا داشت روستاهاشو بگیر و…


#10

بنظره من روش بهتر اینکه کشور ها , استان ها و شهر ها هرکدام جدول جدا داشته باشند و توسط جدول که کلید کشور و استان دارند و جدول استان و شهر دارند متصل شوند

به 3rd normal form نگاه کنید
country
id
name

state
id
name

city
id
name

country_state
country_id
state_id

state_city
state_id
city_id


#11

به نظرتون یک تیبل جدا برای متصل کردن اضافه نیست؟


#12

نه این نوع کلاسیک طراحی روابط شاخه ای در relational theory هستش

https://www.guru99.com/database-normalization.html


#13

ببخشید سوالام در سطح مبتدی هستن ولی فرصت خوبیه بپرسم:
الان منظورتون اینه که باید 5 تا کلاس تعریف بشه به نام های countries و states و city و country_state و state_city؟ یا اینا جدول هایی هستن که باید توی database قرار بگیرن؟ اگه باید تو database قرار بگیرن، در صورتی که بخواییم با استفاده از کلاس ها با python و django یه همچین ساختاری تو database ایجاد کنیم باید چه کلاس هایی و با چه متغیر هایی تعریف کنیم؟
و دیگه اینکه خوب اسم کشور ها و شهر ها و باقی چیزا رو که خیلی زیادن چطور باید ذخیره کنیم؟ با ساختن یه superuser و رفتن به صفحه login که خیلی زمان میبره.


#14

این فقط جدول های database هست هر framework وابسته به رسم های خودش این نوع ارتباط یک طور تعریف میکنه

هر داده درمورد شهر باید تو جدول شهر تعریف بشه هر داده در مورد کشور در جدول کشور …
این تغییرات در migration ها نوشته میشه با superuser کاری نداره


#15

چرا بعضی از نام ها جمعه و بعضی مفرد؟ (singular vs plural)


#16

اصلاً بش توجه نکرده بودم، طبیعتاً همش باید مفرد باشه، نه؟