私は個人プロファイルを開く人を提供するWebサイトのデータベース構造を設計しようとしています。 私が選んだデザインが十分であるかどうかを調べようとしています。問題があると思われる理由は、多くのテーブル間に多くの関係を使用することです。そうすれば、人のページが読み込まれているときに、背後に多くのジョインがあり、それが確実にボトルネックを作ります。デザインが適切かどうか、また再考する必要があるかどうかを理解するのを手伝っていただければ幸いです。Djangoでデータベース構造を設計する
だから私は、次のようなデザインが出ている:各ページのために少なくとも5テーブルの結合があるロードされていること
class Person(models.Model):
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
name = models.CharField(max_length=200)
# Each person can have one profession
profession = models.ForeignKey(Profession)
email = models.CharField(max_length=100, blank=True)
website = models.CharField(max_length=200, blank=True)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES))
birth_date = models.DateField(blank=True, null=True)
class Profession(models.Model):
type = models.CharField(max_length=20, blank=False, choices = ("Teacher","Pilot","Politician"))
#Each person can have several geolocations (represent the person's home/office/other address)
class Geolocation(models.Model):
latitude = models.FloatField()
longitude = models.FloatField()
address = models.TextField()
related_person = models.ForeignKey(Person, blank=False, null=False)
#Each person can have several medias (you tube movies)
class Media(models.Model):
youtube_id = models.CharField(max_length=100)
related_person = models.ForeignKey(Person, blank=False, null=False)
#Each person can have several websites
class Websites(models.Model):
website_url = models.CharField(max_length=200, blank=False)
website_name = models.CharField(max_length=200)
related_person = models.ForeignKey(Person, blank=False, null=False)
#See below...
related_link_farm = models.ForeignKey(LinkFarms, blank=True, null=True)
#Each website that refers to a person must be also refered to a link farm
class LinkFarms(models.Model):
farm_name = models.CharField(max_length=200, blank=False)
は注意してください。
おかげで、
メイア