Chuyển đến nội dung chính

[CSDL] Xây dựng và tối ưu Cơ sở dữ liệu bằng dạnh chuẩn 1NF à 3NF

1 I. Yêu cầu bài toán Quản lý bãi đỗ xe ô tô trong thành phố
Thành phố A quy hoạch 10 vị trí làm bãi đỗ xe ô tô trong thành phố. Mỗi bãi đỗ được chia thành các ô nhỏ (spot).  Mỗi ô tô chỉ sử dụng một spot cho một lần đỗ. Công dân đi vào thành phố có thể mua vé để có được chỗ đỗ xe trong bãi. Tiền vé được tính dựa trên số giờ mà ô tô đỗ trong bãi.

2 II. Xây dựng biểu đồ quan hệ thực thể (ER – entity relationship diagram)
Từ bài toán có thể xác định được các thực thể liên quan như sau:
-       Parking: đại diện cho các bãi đỗ xe trong thành phố.
-       User: Người sử dụng dịch vụ, công dân thành phố.
-       Ticket: Vé đỗ xe

👉Chi tiết các thực thể và thuộc tính
-       Parking entity
Tên trường
Mô tả
Parking_id
Mã bãi đỗ
ParkingSpot
Danh sách các điểm đỗ trong bãi(Spot1, Spot 2… Spotn)
Group
Bãi đỗ thuộc nhóm nào: Dành cho xe Bus, Taxi, xe tải…
Name
Tên bãi đỗ
Address
Địa chỉ bãi đỗ
Image_URL
Hình ảnh về bãi đỗ


-       User entity
Tên trường
Mô tả
UserID
Định danh người dung
FullName

FirstName

LastName

Phone

Email

Address

Number_Plate
Biển số xe
Gender
Giới tính

-       Ticket entity
Tên trường
Mô tả
ticketID
Mã vé
ParkingID
Vé mua thuộc Bãi đỗ nào
SportID
Điểm đỗ trong bãi
Start_time
Thời điểm được phép bắt đâù đỗ xe
End_time
Thời điểm kết thúc đỗ
UserID
ID Ngừoi đỗ
Number_Plate
Biển số xe
Total
Tổng số tiền phải trả
Price
Giá đỗ xe (5000đ/giờ)
*     

  •       Quan hệ giữa các thực thể:

1 User có thể mua n Ticket.
1 Parking có thể bán nhiêù Ticket.

3 III. Chuẩn hoá lược đồ quan hệ
3     3.1  Các dạng chuẩn hoá :
Bao gồm: 1NF, 2NF, 3NF, Boyce-Codd (BCNF). 

*     1NF: Lược đồ quan hệ R ở dạng chuẩn 1(1NF-First Normal Form) nếu mọi thuộc tính của R đều chứa các giá trị nguyên tố (atomic value), giá trị này KHÔNG là một danh sách các giá trị hoặc giá trị phức hợp (composite value).
ð  Đây là dạng chuẩn ở mức thấp nhất và là điều kiện cần cho các dạng chuẩn cao hơn như Dạng chuẩn 2 (2NF), Dạng chuẩn 3 (3NF), Dạng chuẩn Boyce-Codd (BCNF)...

*     3NF: Tất cả thuộc tính không khoá trong 3NF được yêu cầu là phải phụ thuộc TRỰC TIẾP vào mỗi khóa candidate của quan hệ.

3      3.2 Ví dụ áp dụng chuẩn hoá lược đồ quan hệ:
  •           Parking entity
Tên trường
Mô tả
Parking_id
Mã bãi đỗ
ParkingSpot
Danh sách các điểm đỗ trong bãi(Spot1, Spot 2… Spotn)
Group
Bãi đỗ thuộc nhóm nào: Dành cho xe Bus, Taxi, xe tải…
Name
Tên bãi đỗ
Address
Địa chỉ bãi đỗ
Image_URL
Hình ảnh về bãi đỗ








 Theo chuẩn 1NF:
-       ParkingSpot: Chứa danh sách các Spot, ngươi dung đặt chỗ dựa trên các spot này => Do đó cần tách spot thành một thực thể mới.
-       Group: Một Parking có thể chứa nhiều Group như: Bus, Taxi, xe tải… => Các Group này cũng cần được tách ra thành một thực thể.

ð  Vậy từ thực thể Parking ta phân tách được thêm 02 thực thể mới là: Parking Spot và ParkingGroup. Lược đồ quan hệ lúc này sẽ được bổ sung thêm 02 thực thể này. Quan hệ giữa các thực thể mới và Parking:
-       1 Parking có nhiều Parking Spot
-       1 Parking có thể chứa nhiều ParkingGroup
-       1 Parking Spot chỉ thuộc 1 Parking Group duy nhất.


  •      Ticket entity
Tên trường
Mô tả
ticketID
Mã vé
ParkingID
Vé mua thuộc Bãi đỗ nào
SportID
Điểm đỗ trong bãi
Start_time
Thời điểm được phép bắt đâù đỗ xe (Ví dụ 14h00)
End_time
Thời điểm kết thúc đỗ (Ví dụ17h00)
UserID
ID Ngừoi đỗ
Number_Plate
Biển số xe
Price
ĐƠn giá đỗ xe (5000đ/giờ)
Total
Tổng số tiền phải trả (Số giờ * Giá đỗ xe)

Theo chuẩn 1NF:
-       Trường Total có thể được tính qua công thức Số giờ * Giá đỗ xe, tức là:
(End_time - Start_time)* Price
ð  Trường này không nên đưa vào thực thể Ticket.

Theo chuẩn 3NF: Các trường không khoá phải phụ thuộc trực tiếp vào Candidate Key.
-       Number_Plate: Là thong tin về biển số xe của ngừoi dùng. Giả sử một người dung chỉ được đăng ký một biển số xe.

ð  Theo 3NF ta nên tách trường này ra vì nó không liên quan trực tiếp đến Ticket.

(Phân tích chuẩn hoá lược đồ quan hệ tương tự trên các entity khác)

ð  Sau khi hoàn thành bước chuẩn hoá, vẽ lại lược đồ quan hệ mới.



Nhận xét

Bài đăng phổ biến từ blog này

[ebook] Phần I - Tổng hợp nội dung sách "Nuôi con không phải cuộc chiến"

Phần I - Nuôi con không phải cuộc chiến Chương 1: ăn ngủ tự lập mẹ nhàn con ngoan EASY: eat - activity - Sleep - Your time -> Là chu kỳ sinh hoạt lặp đi lặp lại của bé trong một khoảng thời gian 1 ngày của bé. Có thể bạn quan tâm: Khuyến mãi mua trọn bộ sách Nuôi con không phải cuộc chiến I. Nếp sinh hoạt EASY   1. Lợi ích EASY: Đối với bé: + Nhận biết được những gì xảy ra tiếp theo -> Tăng khả năng tự tin của con. + Tập cho bé phản xạ có điều kiện. + Kết nối nhịp sing học của con. Đối vơí mẹ: + Biết cách phản ứng với những nhu cầu khác nhau của bé, không nhầm lẫn giữa khi bé khóc đòi ăn hay làm nũng.  Về lâu dài: + EASY là nền tảng cơ bản giúp rèn luyện sự tự lập ở bé. + Tạo nếp sinh hoạt ăn ngủ điều độ. (Khi con càng lớn chu kỳ EASY càng dài ra) 2.   Chu kỳ 03h: Cho bé từ 0 - 3 tháng tuổi. Bé ăn cách nhau 03 giờ. Cho con ngủ theo bảng thời gian hoặc căn cứ vào dấu hiệu của bé. Cân nặng tiêu chuẩn 2.7kg 3...

[AI] BÀI 4: Tác nhân và môi trường (Agent and Environment)

1. Agent (tác nhân): l à tất cả những gì có thể nhận thức về môi trường của nó thông qua cảm nhận "Sensor" và đưa ra hành động tác động đến môi trường (effective). Có 03 loại agent: human, software, robotic. + Cấu trúc của Agent: Gồm 2 phần:  Architecture + Agent Program + Phân loại Agent: -  Simple Reflex Agents: Agent phản ứng đơn giản. - Model Based Reflex Agents: Agent phản xạ dựa trên model - Goal Based Agents: Agent dựa trên mục tiêu. - Utility Based Agents: Agent dựa trên tính tiện ích. 2. Turing test : Ứng dụng trong việc kiểm tra và đáng giá máy móc có thật sự thông minh?  https://vi.wikipedia.org/wiki/Ph%C3%A9p_th%E1%BB%AD_Turing   3. Các thuộc tính của môi trường Discrete / Continuous  − If there are a limited number of distinct, clearly defined, states of the environment, the environment is discrete (For example, chess); otherwise it is continuous (For example, driving). Observable / Partially Observable  ...

[Tool] Apache Nifi

Introduction Apache NiFi is a dataflow system based on the concepts of flow-based programming. It supports powerful and scalable directed graphs of data routing, transformation, and system mediation logic. NiFi has a web-based user interface for design, control, feedback, and monitoring of dataflows. It is highly configurable along several dimensions of quality of service, such as loss-tolerant versus guaranteed delivery, low latency versus high throughput, and priority-based queuing. NiFi provides fine-grained data provenance for all data received, forked, joined cloned, modified, sent, and ultimately dropped upon reaching its configured end-state. See the  System Administrator’s Guide  for information about system requirements, installation, and configuration. Once NiFi is installed, use a supported web browser to view the UI. Browser Support Browser Version Chrome Current and Current - 1 FireFox Current and Current - 1 Edge Current an...

[Network] ARQ - Automatic repeat request

Automatic Repeat reQuest (ARQ) hay  Automatic Repeat Query là một phương thức điều khiển lỗi cho quá trình truyền dữ liệu bằng cách sử dụng ACK (acknowledgements) và Time Out, cho phép truyền dữ liệu tin cậy trên nền một dịch vụ không tin cậy (unreliable service). 1. ARQ protocol Gồm 03 loại Stop-and-wait ARQ Go-Back-N ARQ Selective Repeat ARQ / Selective Reject 2. Lĩnh vực liên quan Linked Data Transport Layer OSI Model. Ngoài ra có một số bằng sáng chế trong lĩnh vực live video contribution environments  sử dụng tới ARQ.

[Xu hướng] Open API – Xu thế phát triển mới của ngành công nghiệp phần mềm

Xuất bản: 2016-06-30 00:19:09 Các nhà phát triển đã nhận ra rằng việc lãng phí thời gian công sức vào thiết kế lại những thứ đã được các công ty khác xây dựng là hết sức không nên. Thay vào đó, họ hoàn toàn có thể dựa vào những API được các nhà cung cấp nền tảng như Salesforce, Amazon, Google… và mới đây là các nhà phát triển độc lập khác đưa ra. Trong ngành công nghiệp sản xuất phần mềm, mỗi ứng dụng khi được đưa tới công chúng đều nhằm mục đích phục vụ cho một nhu cầu người dùng nhất định.  Có những ứng dụng phục vụ cho mục đích học tập, hoặc giải trí, du lịch, một số khác phục vụ cho mục đích đi lại như GrabTaxi hay Uber chẳng hạn. Mặc dù những ứng dụng này có thể giúp đáp ứng những nhu cầu khác nhau của người sử dụng nhưng cũng không phải vì thế mà chúng được làm ra theo những cách hoàn toàn khác nhau. Bên cạnh đó, tuy có những mục đích sử dụng khác nhau nhưng những ứng dụng như vậy vẫn có những điểm chung, tương đồng về chức năng.  Dù bạn đang sử dụng Faceb...

[Mac OS] Cài đặt maven apache

Ngày tạo: 25/12/2016 Bước 1: Download maven apache từ liên kết:  https://maven.apache.org/download.cgi?Preferred=ftp://mirror.reverse.net/pub/apache/ Bước 2: Cài đăt biến môi trường: mở vào file .bash_profile thêm các dòng. (Nếu file chưa tồn tại thì tạo mới) $ vim ~/.bash_profile export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home export M2_HOME=/Users/mac/Downloads/Programs/apache-maven-3.3.9 export M2=$M2_HOME/bin export PATH=$PATH:$M2_HOME/bin Bước 3 :  Restart Terminal, kiểm tra cài đặt thành công từ terminal bằng lệnh: $ mvn -version Trường hợp cài đặt thành công kết quả trả về như sau: Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T23:41:47+07:00) Maven home: /Users/mac/Downloads/Programs/apache-maven-3.3.9 Java version: 1.8.0_60, vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre Default locale: en_US, platform encoding: UTF-8 ...

[LB-HA] Understand about High Available (HA) and Load Balancing

High Available (HA) :  Hỗ trợ dự phòng tiến trình. Hoạt đông với cơ chế Active - Passive . Hệ thống tồn tại 02 loại Component với role 'Active' và 'Passive'.  Active   Component sẽ đảm nhận việc xử lý tiến trình. Passive Component đóng vai trò backup. Trường hợp Active Component gặp lỗi (fail, downtime) hệ thống sẽ chuyển sang hoạt động trên B ackup  Component . Quá trình chuyển từ Active Component sang Passive Component gọi là 'Fail over'. Một số khái niệm liên quan đến HA: - FailOver: Chuyển đổi tiến trình chạy trên Passive Component khi Active Component gặp sự cố. - Fail Back: Khôi phục lại tiến trình hoạt động trên Active Component sau khi tiến trình dịch chuyển đến Passive Component trong quá trình FailOver. - Fault - Tolerant: Công nghệ giúp đảm bảo tính liên tục của dịch vụ. Trường hợp một thành phần trong hệ thống bị hoạt động gián đoạn vẫn cho phép toàn bộ hệ thống hoạt động ổn định. Load Balancing : Hoạt động với cơ chế Active - Active ....

[PM4P] First step for reaching to PMP Certificate

27/07/2019: First step for reaching to PMP Certificate

Quản lý Session khi cấu hình dự phòng máy chủ sử dụng HAproxy

1.        Vấn đề Cùng một HTTP session có thể nằm trên nhiều kết nối TCP khác nhau. Trong điều kiện không sử dụng Load Balancer, sẽ không phát sinh các vấn đề về quản lý phiên – session. Thông tin session của tất cả người dùng được nhận biết thông qua một máy chủ duy nhất. Tất cả kết nối của Client đều được chuyển đến một máy chủ duy nhất. Ở chế độ dự phòng, khi người quản trị cài đặt nhiều hơn một server, vấn đề về quản lý session sẽ xuất hiện. Máy chủ ứng dụng có nguy cơ không thể access thông tin session người dùng. 2.        Phương án cấu hình dự phòng khi sử dụng session ·          Replication : Sử dụng cơ chế sao lưu session của web server để đảm bảo rằng tất cả các máy chủ ứng dụng thuộc cluster khác nhau đều có thông tin của Session. Một số web server phổ biến như tomcat đều hỗ trợ cơ chế replication session này. ·       ...