thông tin trên cột TMP_PONYLIST
là dư thừa (nó tồn tại ở một nơi khác). Bạn sẽ gặp phải tất cả các loại vấn đề để duy trì nó (Không có giải pháp nào hoạt động chính xác trong môi trường nhiều người dùng trừ khi có một số loại cơ chế khóa).
Trong một mô hình chuẩn hóa, bạn chỉ cần bỏ cột này khỏi mô hình vật lý. Nếu bạn cần thông tin, bạn có thể sử dụng một dạng xem, ví dụ với Oracle 11gR2:
CREATE OR REPLACE VIEW rider_v AS
SELECT rider_id, /*...,*/
(SELECT listagg(p.pony_name, ';') WITHIN GROUP (ORDER BY p.pony_name)
FROM t_pony p
JOIN t_rider_pony rp ON (p.pony_id = rp.pony_id)
WHERE rp.rider_id = r.rider_id) tmp_ponylist
FROM t_rider r;
Xem SO ví dụ về tổng hợp chuỗi trước 11gR2.