2010-07-14 5 views
1

За исключением Linq, были ли они любыми другими попытками интегрировать реляционные функции в объект-ориентированный язык, а не только библиотеки?Реляционные функции в объектно-ориентированных языках программирования

UPDATE Одной из наиболее очевидных примеров является один-к-одному, один-ко-многим или многие-ко-многим отношений. Затем вы также можете рассмотреть отношения, имеющие свойства.

+0

Определить 'реляционные функции' –

ответ

3

Насколько мне известно. Фактически, LINQ сам по себе не является особенно «реляционным» в оригинальном смысле слова «Кодд». (SQL тоже нет, но это уже другая история.)

Для того, чтобы установить тон, LINQ даже не имеет понятия отношения (свободно говорящего, набора корней типа «имя/значение», соответствующих заголовку , который является корнем типа name/type). Это касается последовательностей, а не наборов и объектов вместо кортежей. Даже анонимные объекты не совпадают с именами кортежей в смысле реляционной модели, так как new { b = 2, a = 1 } не только не равен new { a = 1, b = 2 }, они даже не одного типа!

Справедливости ради следует отметить, что LINQ является огромным улучшением по сравнению с обломками поезда для доступа к данным за последние 40 лет, но это всего лишь крошечный шаг в правильном направлении, и я подозреваю, что нет никакого намерения шаги. На самом деле LINQ-to-EF мне кажется огромным шагом в неправильном направлении, к моделированию ОО и от реляционной модели (конечно, не все согласятся со мной на этом ;-).

0

Существует Embedded SQL в C для Postgres: http://www.postgresql.org/docs/8.4/interactive/ecpg.html

Но я никогда не использовал его сам.

В большинстве случаев простая библиотека позволяет получить доступ к базам данных SQL и обеспечивает хорошее разделение между «реляционными» и объектно-ориентированными мирами (хотя, как заявил Марсело Кантос, SQL фактически не является реляционным в оригинале теоретический смысл ..).

Однако, может быть, вы ищете что-то, чтобы «сопоставить» между реляционными и объектно-ориентированными? Существует метод, называемый объектно-ориентированным отображением, который создает своего рода объектно-ориентированное представление для реляционных баз данных (см. http://en.wikipedia.org/wiki/Object-relational_mapping). Но будьте осторожны, это может показаться приятным, но на практике создает некоторые проблемы (подробности см. В http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch).

Смежные вопросы