私のプロジェクトでは、この問題を解決するために3つのテーブルを使用しています
CREATE TABLE cart(
ID NUMBER,
CUSTOMER_ID NUMBER,
DATE DATE DEFAULT SYSDATE,
SESSION_ID VARCHAR2(32 BYTE)
)
CREATE TABLE cart_parameter(
SESSION_ID VARCHAR2(32 BYTE),
CODE VARCHAR2(32 BYTE),
TYPE VARCHAR2(32 BYTE),
AMOUNT NUMBER
)
CREATE TABLE product(
ID NUMBER,
CODE VARCHAR2(32 BYTE),
description VARCHAR2(200 BYTE),
price NUMBER(30,2),
... more info
)
Other tables
このアーキテクチャは正しいため、バスケットはさまざまな数のアイテムであり、さまざまなテーブルに配置できます。たとえば、コンピュータ、スマートフォン、本などを置いたテーブルがあります。オプションで製品 ID を入力しますが、異なるテーブルが同じ ID を持つ異なる製品である可能性があります。次に、アプリケーションの拡張に問題があります
この関数は、このセッションの一意の値を返します
FUNCTION getSessionID
IS
BEGIN
RETURN utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(TO_CHAR(customer_id) || TO_CHAR(systimestamp, 'DDMONYYYYHH24MISSFF') || s_user_ip || dbms_random.random()));
END;
このセッション ID を使用して、cart テーブルと cart_parameter テーブルを接続します
P/S: 私の英語ですみません。すべて Google 翻訳です。