/ / Hiểu các mối quan hệ cơ sở dữ liệu trong Django

Hiểu các mối quan hệ cơ sở dữ liệu trong Django

Mối quan hệ cơ sở dữ liệu mô tả kết nối giữa các bảng cơ sở dữ liệu khác nhau. Các quan hệ xác định cách thức lưu trữ và truy xuất dữ liệu. Django hoạt động tốt với các hệ thống cơ sở dữ liệu quan hệ (RDBMS). Do đó, nó hỗ trợ các mối quan hệ bảng cơ sở dữ liệu.


Các loại mối quan hệ phụ thuộc vào yêu cầu của ứng dụng của bạn và dữ liệu mà nó mô hình hóa. Mối quan hệ tốt giữa các mô hình Django và cơ sở dữ liệu cải thiện việc bảo trì dữ liệu. Điều đó bao gồm cải thiện hiệu suất truy vấn và giảm trùng lặp dữ liệu.

Bạn có thể tìm hiểu cách các mối quan hệ cơ sở dữ liệu Django ảnh hưởng đến hiệu suất ứng dụng bằng cách khám phá ba loại mối quan hệ chính.


Mối quan hệ cơ sở dữ liệu

Các hệ thống cơ sở dữ liệu quan hệ hỗ trợ ba loại quan hệ cơ sở dữ liệu. Các mối quan hệ này là một-nhiều, nhiều-nhiều và một-một. Loại quan hệ cơ sở dữ liệu ảnh hưởng đến các trường hợp sử dụng ứng dụng của bạn.

Các mô hình Django đại diện cho các bảng cơ sở dữ liệu trong ứng dụng. Bạn phải tạo mối quan hệ tốt giữa các bảng để tạo ra một hệ thống cơ sở dữ liệu tốt. Quan hệ cơ sở dữ liệu xác định cách lưu trữ và trình bày dữ liệu trong ứng dụng của bạn.

Để hiểu quan hệ cơ sở dữ liệu, hãy bắt đầu bằng cách tạo dự án Django có tên Mũ trùm đầu. Ứng dụng này sẽ là một mạng xã hội lân cận. Nó sẽ quản lý các hoạt động xã hội, an ninh và kinh doanh của các khu phố khác nhau.

Cư dân có thể đăng ký, đăng nhập và tạo hồ sơ. Họ cũng có thể tạo các bài đăng và quảng cáo kinh doanh cho mọi người xem.

Để bắt đầu, hãy tạo một cơ sở dữ liệu sẽ lưu trữ tất cả dữ liệu vùng lân cận. Sau đó, bạn sẽ tạo các mô hình Hồ sơ, Hàng xóm tốt, Doanh nghiệp và Bài đăng. Để tạo các mô hình, bạn phải xác định mối quan hệ mà các bảng cơ sở dữ liệu cần.

Mối quan hệ cơ sở dữ liệu một-một

Mối quan hệ một-một ngụ ý một bản ghi trong một mô hình Django liên quan đến một bản ghi khác trong một mô hình khác. Hai bản ghi phụ thuộc vào nhau. Trong trường hợp này, Mô hình hồ sơ Phụ thuộc vào Mô hình người dùng để tạo hồ sơ cư dân.

Vì vậy, chỉ có thể có một hồ sơ cho mỗi cư dân đăng ký trên ứng dụng. Ngoài ra, nếu không có người dùng, một hồ sơ không thể tồn tại.

from django.db import models
from django.contrib.auth.models import User

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
name = models.CharField(max_length=80, blank=True)
bio = models.TextField(max_length=254, blank=True)
profile_picture = CloudinaryField('profile_picture', default='default.png')
location = models.CharField(max_length=50, blank=True, null=True)
email = models.EmailField(null=True)

def __str__(self):
return f'{self.user.username} profile'

Mô hình Người dùng của Django là một mô hình xác thực được tích hợp sẵn trong Django. Bạn không cần phải tạo một mô hình cho nó. Thay vào đó, hãy nhập nó từ django.contrib.auth. Các OneToOneField () trên Mô hình hồ sơ xác định mối quan hệ một đối một.

Các on_delete=models.CASCADE đối số ngăn việc xóa một trong những bản ghi này. Bạn phải xóa các bản ghi khỏi cả hai bảng.

Bạn có thể sử dụng giao diện quản trị Django để trực quan hóa mối quan hệ trong ứng dụng của mình. Để đăng nhập vào quản trị viên Django, bạn phải đăng ký với tư cách là người dùng quản trị viên được gọi là siêu người dùng.

Tạo một siêu người dùng bằng cách chạy lệnh sau trên thiết bị đầu cuối:

python manage.py createsuperuser

Sẽ có lời nhắc nhập tên người dùng, email và mật khẩu của bạn. Khi bạn đã hoàn thành, hãy khởi động máy chủ.

Mở trang quản trị trong trình duyệt bằng URL http://127.0.0.1:8000/admin.

Bạn sẽ thấy trang quản trị nơi bạn có thể đăng nhập bằng thông tin đăng nhập mà bạn đã tạo trước đó. Sau khi đăng nhập, bạn sẽ thấy Các nhómngười dùng các đối tượng. Khung xác thực Django quản lý hai mô hình này. Ở dưới cùng, bạn sẽ thấy Mô hình hồ sơ.

Mở Hồ sơ mô hình và tiến hành thêm một hồ sơ. Bạn sẽ thấy nó hiện ra như sau:

Quản trị viên Django hiển thị mối quan hệ giữa mô hình hồ sơ và người dùng

Lưu ý rằng bạn có tùy chọn tạo hồ sơ cho người dùng. Kiểu dữ liệu OneToOneField() cho phép bạn tạo hồ sơ cho người dùng được xác thực. Đây là cách ứng dụng quản lý các mối quan hệ một đối một.

Mối quan hệ một-nhiều

Một mối quan hệ một-nhiều ngụ ý rằng một bản ghi trong một mô hình liên kết với nhiều bản ghi trong một mô hình khác. Nó cũng được gọi là mối quan hệ nhiều-một.

Trong trường hợp của bạn, một quản trị viên có thể tạo một số vùng lân cận. Nhưng mỗi vùng lân cận chỉ có thể thuộc về một quản trị viên. Bạn có thể sử dụng kiểu dữ liệu ForeignKey để xác định mối quan hệ như vậy.

Django có giao diện quản trị tích hợp. Bạn không cần phải tạo một mô hình cho nó. Quản trị viên có quyền quản lý nội dung và trực quan hóa ứng dụng từ bảng quản trị.

Mô hình chứa nhiều bản ghi sẽ có khóa ngoại. Nó xác định mối quan hệ là một-nhiều. Đoạn mã dưới đây cho biết vị trí đặt chìa khóa.

class NeighbourHood(models.Model):
admin = models.ForeignKey("Profile", on_delete=models.CASCADE, related_name='hood')
name = models.CharField(max_length=50)
location = models.CharField(max_length=60)
hood_logo = CloudinaryField('hood_logo', default='default.png')
description = models.TextField()
health_tell = models.IntegerField(null=True, blank=True)
police_number = models.IntegerField(null=True, blank=True)
Count= models.IntegerField(null=True, blank=True)

def __str__(self):
return f'{self.name} hood'

Bạn có thể thấy mối quan hệ trên ứng dụng như minh họa trong hình:

Mô hình vùng lân cận hiển thị lựa chọn của Quản trị viên đã được thêm vào

Các Khu vực lân cận mô hình hiện có một quản trị viên. Đối với bất kỳ ai tạo vùng lân cận, họ phải có quyền quản trị. Và một khu phố không thể có nhiều quản trị viên.

Mối quan hệ Cơ sở dữ liệu Nhiều-Nhiều

Trong nhiều-nhiều các mối quan hệ, nhiều bản ghi trong một mô hình này kết hợp với những bản ghi khác trong một mô hình khác. Ví dụ, Bưu kiện Việc kinh doanh các mô hình có thể có một số bản ghi của nhau. Người dùng có thể tạo một số quảng cáo kinh doanh trong bài đăng của họ và ngược lại.

Tuy nhiên, việc tạo mối quan hệ nhiều-nhiều có thể dẫn đến dữ liệu không chính xác. Trong các khung khác, bạn sẽ phải tạo một bảng mới để nối hai bảng.

Django có một giải pháp cho việc này. Khi bạn sử dụng trường nhiều-nhiều, nó sẽ tạo một bảng mới ánh xạ hai bảng với nhau. Bạn có thể đặt trường nhiều-nhiều vào một trong hai mô hình, nhưng không nên đặt trường này trong cả hai mô hình.

class Post(models.Model):
title = models.CharField(max_length=120, null=True)
post = models.TextField()
date = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='post_owner')
hood = models.ForeignKey(NeighbourHood, on_delete=models.CASCADE, related_name='hood_post')
business = models.ManyToManyField(Business)

def __str__(self):
return f'{self.title} post'

Bây giờ, khi bạn xem Bưu kiện mô hình trên bảng quản trị, bạn có thể đính kèm một số doanh nghiệp vào một bài đăng.

Mô hình bài đăng có tùy chọn để thêm một số doanh nghiệp

Django đơn giản hóa các mối quan hệ cơ sở dữ liệu

Loại cơ sở dữ liệu bạn sử dụng cho ứng dụng của mình sẽ xác định cách khai thác dữ liệu. Django có một hệ thống toàn diện giúp kết nối và vận hành cơ sở dữ liệu quan hệ dễ dàng.

Các tính năng của Django giúp dễ dàng lưu trữ và truy xuất dữ liệu từ các bảng liên quan. Nó có các API tích hợp để kết nối và tạo quan hệ cơ sở dữ liệu cho ứng dụng của bạn.

Mối quan hệ cơ sở dữ liệu xác định hành vi của ứng dụng của bạn. Việc bạn sử dụng mối quan hệ một-một, một-nhiều hay nhiều-nhiều là tùy thuộc vào bạn.

Với Django, bạn có thể cấu hình và kiểm tra các tính năng mà không làm hỏng ứng dụng của mình. Sử dụng Django để bảo mật hệ thống cơ sở dữ liệu và tối ưu hóa trải nghiệm nhà phát triển của bạn.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *