Per Definition muss der Primärschlüssel eindeutig sein. Aber das bedeutet nicht, dass Sie Ihre Ziele nicht erreichen können. Sie müssen nur Ihre Vorgehensweise/Terminologie ändern.
Vor allem, wenn Sie Ihr Ziel Entspannung der mit der Name + Nachname einen Primärschlüssel, können Sie folgendes tun:
CREATE TABLE users (name text, surname text, age int, address text, PRIMARY KEY((name, surname),age));
insert into users (name,surname,age,address) values ('name1','surname1',10,'address1');
insert into users (name,surname,age,address) values ('name1','surname1',30,'address2');
select * from users where name='name1' and surname='surname1';
name | surname | age | address
-------+----------+-----+----------
name1 | surname1 | 10 | address1
name1 | surname1 | 30 | address2
Wenn auf der anderen Seite, dass die sicherstellen wollte Die Adresse wird ebenfalls freigegeben. Dann möchten Sie wahrscheinlich nur eine Sammlung von Altersgruppen im Benutzerdatensatz speichern. Das könnte erreicht werden durch:
CREATE TABLE users2 (name text, surname text, age set<int>, address text, PRIMARY KEY(name, surname));
insert into users2 (name,surname,age,address) values ('name1','surname1',{10,30},'address2');
select * from users2 where name='name1' and surname='surname1';
name | surname | address | age
-------+----------+----------+----------
name1 | surname1 | address2 | {10, 30}
So kommt es zurück, was Sie tatsächlich erreichen müssen. Hoffentlich geben die obigen Beispiele Ihnen einige Ideen.
gut .. um fair zu sein, könnte es beide Werte zurückgeben, wenn es Duplikate gab :) – Chip