Skip to content
nin-jin edited this page Nov 8, 2020 · 6 revisions

Все идентификаторы суррогатные, чтобы пользователь мог спокойно менять все названия не нарушая ссылочную целостность. Все выводимые в интерфейс тексты задаются как словарь язык-текст. Отношения двусторонние одного из 3 топологических типов: 1:1, 1:M, M:M. Если не задано название сущности (или их набора) в отношении, то используется собственно название сущности.

Все поля опциональны. Констрейнты (обязательность, уникальность и тд) задаются не на уровне хранения, а на уровне процессов. Например: "отображать в общем списке лишь сущности с заполненным названием плюс те без названия, автором которых значится текущий пользователь". Соответственно у полей можно рисовать индикаторы типа "это поле необходимо для такого-то процесса". Дальше пользователь уже сам решает какие поля и когда заполнять. То есть сущность всегда создаётся в виде пустого драфта, а потом редактируется. А не так, что отдельно создаётся, отдельно редактируется.

Пример домена PiterJS

		entity *
			ppp *
				name * ru \Площадка
				color \green
				attribute *
					tt *
						name * ru \Название
						type \l10n
					aa *
						name * ru \Адрес
						type \l10n
			mmm *
				name * ru \Митап
				color \red
				attribute *
					nn *
						name * ru \Номер
						type \text
					rr *
						name * ru \Трансляция
						type \text
			uuu *
				name * ru \Персона
				color \blue
				attribute *
					ee *
						name * ru \Имя
						type \l10n
					ii *
						name * ru \Почта
						type \text
			ddd *
				name * ru \Выступление
				color \magenta
				attribute *
					tt *
						name * ru \Название
						type \l10n
					dd *
						name * ru \Описание
						type \l10n
					uu *
						name * ru \Длительность
						type \duration
						unit \minute
		relation *
			111 *
				topo \1:M
				source \ppp
				target \mmm
				target_name * ru \Митапы
			222 *
				topo \1:M
				source \mmm
				target \ddd
				target_name * ru \Выступления
			333 *
				topo \M:M
				source \mmm
				target \uuu
				source_name * ru \Ведущий митапов
				target_name * ru \Ведущие
			444 *
				topo \M:M
				source \ddd
				target \uuu
				source_name * ru \Выступления
				target_name * ru \Докладчики

Пример сущностей PiterJS

		ppp *
			oooo *
				attribute *
					tt * ru \Онлайн
					dd * ru \До конца эпидемии встречаемся онлайн
				relation *
					111 / \ssss
		mmm *
			ssss *
				attribute *
					nn \#66
					rr \https://youtube.com/piterjs
				relation *
					111 / \oooo
					222 /
						\cccc
						\yyyy
						\dddd
		sss *
			cccc *
				attribute *
					tt * ru \Как победить копипасту?
					dd * ru \Расскажу о своём ноу-хау.
					uu \PT40m
				relation *
					222 / \ssss
			yyyy *
				attribute *
					tt * ru \Слепое программирование
					dd * ru \Настоящее кунг-фу программирования.
					uu \PT30m
				relation *
					222 / \ssss
			dddd *
				attribute *
					tt * ru \Зависимость о программирования
					dd * ru \Обмениваемся опытом слезания с кодинга.
					uu \PT60m
				relation *
					222 / \ssss
Clone this wiki locally