Cấu trúc quản lý hóa đơn hàng hóa trong nosql

Nhân đọc bài Quản lý hoá đơn hàng hoá

mình thấy trên mạng có một cấu trúc như sau không biết có tên tuổi gì không? anh em thảo luận chơi


chi_tiet:
key1
{ten:"duong",don_gia:100}
key2
{ten:"sua",don_gia:100}

hoa_don
k_hd1
{  ngay:11111,khach:"nguyen van A",
   ct:{key1:true,key2:true}
}


khi muốn thêm chi tiết vào hóa đơn k_hd1
bước 1: thêm một dòng vào chi_tiet, lấy key
bước 2: append key này vào ct của hóa đơn k_hd1

kết quả là


chi_tiet:
key1
{ten:"duong",don_gia:100}
key2
{ten:"sua",don_gia:100}
key_new
{.........}

hoa_don
k_hd1
{  ngay:11111,khach:"nguyen van A",
   ct:{key1:true,key2:true,key_new:true}
}

Nếu dùng NoSQL thì không cần phải chia ra kỹ quá

Hoá đơn:

{
	so_hd: 1234124,
	ngay_lap: 1541289600,
	ten_khach: "Trần Hoàn",
	chi_tiet:
	[
		{
			hang_id: 123,
			so_lg: 10
		},
		{
			hang_id: 412,
			so_lg: 15
		}
	]
}

Mình nghĩ không cần đưa đơn giá vào hoá đơn đâu, vì id của hàng là cho biết đơn giá rồi. Trừ khi đơn giá hàng hoá thay đổi thường xuyên mới phải thêm trường đó vào.

Làm như bạn khi tính tổng tiền của hóa đơn thì khá vất vả trong nosql, cái của mình chỉ cần lấy bảng chi_tiet ra xử :grinning:

Thế thì thêm trường đơn giá vào trong mỗi hàng hoá của chi_tiet thôi mà, mình thấy có gì đâu.

thực ra cái phần mình nói là trong phần cấu trúc của firebase thấy lạ nên trình bày thôi

https://firebase.google.com/docs/database/web/structure-data

mà trong firebase tổ chức kiểu này lại thấy hay

// An index to track Ada's memberships
{
  "users": {
    "alovelace": {
      "name": "Ada Lovelace",
      // Index Ada's groups in her profile
      "groups": {
         // the value here doesn't matter, just that the key exists
         "techpioneers": true,
         "womentechmakers": true
      }
    },
    ...
  },
  "groups": {
    "techpioneers": {
      "name": "Historical Tech Pioneers",
      "members": {
        "alovelace": true,
        "ghopper": true,
        "eclarke": true
      }
    },
    ...
  }
}

Với cái hoa_don thì thế này :

{
	"hoa_don":{
		"hd1":{
			"ten_khach":"nguyen van A",
			"ct":{
				"ct1":true,
				"ct2":true
			}
		},
		"hd2":{
			"ten_khach":"nguyen van B",
			"ct":{
				"ct3":true
			}
		}
	},
	"chi_tiet":{
		"ct1":{
			"hang_id":"h1",
			"so_lg":1,
			"tien":1
		},
		"ct2":{
			"hang_id":"h2",
			"so_lg":1,
			"tien":1
		},
		"ct3":{
			"hang_id":"h3",
			"so_lg":1,
			"tien":1
		}
	},
	"hang":{
		"h1":{ "ten":"bot","don_gia":1 },
		"h2":{ "ten":"sua","don_gia":1 },
		"h3":{ "ten":"duong","don_gia":1 }
	}

}

Hình như firebase không gọi là nosql nhỉ?

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?