استفاده از روالهای مشترک ولی موردی در جداول
فرض کنیم پروژهای شامل 100 جدول است و هرجدول حدود 1000 ردیف دارد و تمامی اطلاعاتی که در جدوال ثبت میشوند بدلیل ماهیت اون کسب و کار ممکن است به ازای هر ردیف توضیحاتی توسط کاربر در آن درج شود. این ستون میتواند یک نام مانند Comment و یا Remark داشته باشد.
سوال: آیا پیاده سازی این روش اشکال فنی دارد؟
اگر بجای ایجاد ستون Comment و یا Remark در تمامی جدوال که احتمالا 90 درصد ردیفها نیازی به آن ندارند و در تمامی جداول null باقی خواهند ماند، یک جدول با نام Comment ایجاد کنم و ستونهای آن بصورت زیر باشد:
Id, TableName, TableId, Comment
اگرچه که امکان ایجاد رابطه با تمام جدوال برای TableId وجود ندارد اما در زمان واکشی دادهها میتوان در مدل خروجی (Output Model) یک List از Commentهای متناظر با جدول واکشی شده قرار داد تا برنامه سمت Client از آن استفاده کند.
نقل قول: استفاده از روالهای مشترک ولی موردی در جداول
خب این همون روش خیلی قدیمی child/extension table هست
که وقتی مثل اینجا فیلدهایی دارین که بیشترش null هست (sparse data)
یا ساختار سلسله مراتبی دارن (hierarchical) استفاده میشه - این مورد شما فقط یک level داره البته
و این که عمومی تر از جدول فرزند عادی هست.
بنابراین اشکال فنی نداره چون یک کار نرمال و روتین و منطقی هست،
ولی مثل هر کاری باید نسبت به روش های دیگه مزایا و معایبش رو بررسی کنین.
ولی Id, TableName, TableId, Comment گویا باید اینجوری باشه: Id, TableName, RecordId, Comment
====
الان 10 سالی هست که MS SQL مستقیما فیلد نوع sparse رو پشتیبانی میکنه،
که بد نیست اون رو هم یک نگاهی بندازین.