Ứng dụng của chúng tôi có một cửa hàng trực tuyến trong số các tính năng khác và người dùng thường được yêu cầu đăng ký trước khi hoàn tất bán hàng, tạo một customer_ID
duy nhất trong quá trình này. Khi họ quay trở lại, họ có thể đăng nhập và chi tiết liên lạc của họ và lịch sử giao dịch được lấy từ cơ sở dữ liệu.Có cách nào để lưu trữ thông tin về người dùng ẩn danh/khách trong cơ sở dữ liệu?
Chúng tôi hiện đang khám phá những điều cần làm trong trường hợp khách hàng 'ẩn danh' hoặc 'khách', mở cửa hàng trực tuyến cho những khách hàng không muốn đăng ký và cũng bán hàng đăng nhập vào ứng dụng phụ trợ, nơi lấy email, địa chỉ bưu điện của khách hàng, v.v ... chỉ mất quá nhiều thời gian. Giải pháp có các ứng dụng bên ngoài cửa hàng trực tuyến.
Nhiều công ty sử dụng cơ sở dữ liệu giống nhau, và cơ sở dữ liệu được xây dựng trên một cấu trúc party model, vì vậy chúng tôi đã khám phá một vài lựa chọn:
- Lưu trữ tất cả các khách hàng ẩn danh dưới một được xác định trước
customer_ID
trong bảngtransaction
:customer_ID = 0
cho mỗi người dùng ẩn danh, vàcustomer_ID > 0
cho mỗi người dùng thực- i này s thẳng về phía trước để mã hóa cứng vào ứng dụng
- Nhưng tham gia nhiều hơn để xác định khách hàng thuộc về công ty nào
- chi tiết cho
customer_ID = 0
nên tồn tại trong bảngcustomer
trong cơ sở dữ liệu hoặc như là một đối tượng trong ứng dụng?- Nếu trong cơ sở dữ liệu, những hạn chế mức cơ sở dữ liệu nào có thể được thực hiện để đảm bảo rằng nó luôn tồn tại?
- Nếu không có trong cơ sở dữ liệu, khó khăn chính sau đó nước ngoài từ
transaction.customer_ID
đểcustomer.customer_ID
không còn làm việc
customer_ID
cũng giống như các công typarty_ID
- dễ dàng hơn để xác định doanh thu tổng hợp cho mỗi công ty , vv
- Điều này sẽ gây nhầm lẫn các vấn đề vì có vẻ như công ty là khách hàng của riêng họ, thay vì các khách hàng duy nhất khác
- Tạo một độc đáo
customer_ID
cho mọi khách hàng ẩn danh mới (mỗi phiên)- gì nếu dùng quay trở lại thể chất giống nhau không? Sẽ có nhiều bản ghi lặp lại cùng một loại dữ liệu; email, địa chỉ vận chuyển, vv
- Sử dụng một khóa duy nhất, chẳng hạn như địa chỉ email, để chỉ một khách hàng
- Không phải lúc nào đáng tin cậy như người ta đôi khi sử dụng nhiều hơn một địa chỉ email, hoặc để lại địa chỉ cũ phía sau.
- Điều gì sẽ xảy ra nếu không có địa chỉ email để thực hiện, như trường hợp trên sàn cửa hàng, hóa đơn chiếu lệ, v.v ...?
- Một số giải pháp lấy cảm hứng từ Stack Overflow khác!
Addition
Một sự kết hợp của # 2 và # 3 đã được đề xuất ở nơi khác - cố gắng để lưu trữ một hồ sơ duy nhất cho mỗi khách hàng, bằng cách sử dụng địa chỉ email nếu có thể, hoặc một kỷ lục mới trên tất cả các chuyến viếng thăm nếu không.
Tôi phải chỉ ra rằng chúng ta không cần để lưu trữ một bản ghi cho mỗi khách hàng giấu tên, nhưng nó chỉ có vẻ như cơ sở dữ liệu quan hệ được xây dựng để đối phó với các mối quan hệ, do đó, có một NULL hoặc một customer_ID
trong transaction
bảng không tham chiếu đến hồ sơ khách hàng thực tế dường như không đúng ...
Tôi cũng phải nhấn mạnh rằng mục đích của câu hỏi này là xác định giải pháp thực tế nào để ghi các giao dịch 'bình thường' không có địa chỉ bưu điện hoặc địa chỉ email được đưa ra (tưởng tượng một chekout siêu thị) cùng với các giao dịch mua sắm trực tuyến, nơi một địa chỉ email và địa chỉ bưu điện được cung cấp cho dù chúng được lưu trữ hay không.
Cộng đồng SO nào được sử dụng trong quá khứ?
Tôi muốn tìm giải pháp địa chỉ email. email như danh tính sẽ giúp bạn có được hầu hết những gì bạn muốn, nơi bạn có thể nhấn các trường hợp cạnh với một tỷ lệ rất nhỏ dân số. – Anon
Tôi muốn sử dụng 'null' cho thông tin còn thiếu, đó là những gì' null' được phát minh. – Johan
Thậm chí bạn có cần cơ sở dữ liệu cho người dùng nặc danh không? Bạn không thể lưu trữ nội dung giỏ hàng trong cookie trong khi duyệt, sau đó sử dụng nội dung đó để kích hoạt đơn đặt hàng? Việc gửi biểu mẫu gửi đơn đặt hàng và thông tin của họ đến các bên quan tâm. Khách hàng của bạn muốn ẩn danh vì một lý do. – stslavik