Это потому, что первичный ключ в PLAYER является составным, поэтому внешний ключ, который на него указывает, также должен быть составным.
Моя версия GOAL - обратите внимание на добавление GPCid и его включение во внешний ключ:
CREATE TABLE GOAL(
GPCid varchar(2) not null,
GPno int NOT NULL,
GMinute varchar(6) NOT NULL,
GoalType char NOT NULL,
GGid varchar(2) NOT NULL,
PRIMARY KEY(GPno, GGid, GMinute) ,
FOREIGN KEY (GPCid,GPno) REFERENCES PLAYER(PCid,Pno),
FOREIGN KEY (GGid) REFERENCES GAME(Gid)
);
И аналогично для CARD и т. Д.
Я организую дополнительные методы с помощью комбинации пространства имен и имени класса, и это подобно способу, которым Вы описываете в вопросе.
Обычно у меня есть своего рода "предварительное предвыборное собрание для выдвижения кандидатов" в моем решении, которое предоставляет большинству общей функциональности (как дополнительные методы). Мы назовем этот блок "Платформой" ради обсуждения.
В рамках блока Платформы, я пытаюсь подражать пространствам имен вещей, для которых у меня есть дополнительные методы. Например, если я расширяю Систему. Сеть. HttpApplication, у меня была бы "Платформа. Сеть" пространство имен. Классы как "Строка" и "Объект", находящийся в "Системном" пространстве имен, переводят в корневое пространство имен "Платформы" в том блоке.
Наконец, именование продвигается строки, которые Вы указали в вопросе - имя типа с "Расширениями" как суффикс. Это приводит к иерархии классов как это:
преимущество - то, что с точки зрения обслуживания действительно легко позже пойти, находят дополнительные методы для данного типа.
Существует два способа, которыми я организую дополнительные методы, которые я использую,
1), Если расширение характерно для проекта, я продолжаю работать, затем я сохраняю его в том же проекте/блоке, но в его собственном пространстве имен.
2), Если расширение является видом так, чтобы я мог или использовал его в других проектах также, затем я разделяю их в общем блоке для расширений.
самая важная вещь иметь в виду, каков объем, в котором я буду использовать их? Организация их не трудна, если я просто имею это в виду.