Что такое эквивалент реляционной базы данных Factorial и Fibonacci?

При изучении нового языка программирования всегда есть пара традиционных проблем, которые хороши для того, чтобы заставить себя двигаться. Например, Hello world и Fibonacci покажут, как читать входные, выходные и вычислительные функции (хлеб и масло, которые решат в основном все), и хотя они действительно просты, они достаточно нетривиальны, чтобы быть достойными своего времени (и всегда есть некоторое удовольствие, которое можно было бы получить, вычислив факториал смехотворно большого числа на языке с бигномами)

Итак, теперь я пытаюсь справиться с какой-то системой SQL, и все примеры учебников, которые я могу представить, включают в себя скучно скучные таблицы, такие как "Студент" или "Сотрудник". Какие приятные альтернативные наборы данных я могу использовать вместо? Я ищу что-то, что (в порядке важности)...

  • Данные могут быть сгенерированы простым алгоритмом.
    • Я не хочу вводить вещи вручную.
    • Я хочу иметь возможность легко увеличить размер моих таблиц до повышения эффективности стресса и т.д.
  • Может использоваться для демонстрации как можно большего количества материалов. Выбирает, объединяет, индексирует... Вы называете это.
  • Может использоваться для получения некоторых интересных результатов.
    • Я могу жить с "скучными" манипуляциями с данными, если данные реальны и могут использоваться сами по себе, но я бы предпочел иметь что-то более интересное, если я создаю набор данных с нуля.

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

Ответы

Ответ 1

Базовая база данных в мире Microsoft Northwind. Один из подобных открытых источников (EPL) - это Eclipse База данных Classic Models.

Вы не можете автогенерировать, насколько мне известно.

Тем не менее, Northwind "импортирует и экспортирует специализированные продукты со всего мира", в то время как Classic Models продает "масштабные модели классических автомобилей". Оба довольно интересные.:)

Ответ 2

SQL - это язык запросов, а не процедурный язык, поэтому, если вы не будете играть с PL/SQL или чем-то похожим, ваши примеры будут обрабатывать данные.

Итак, вот что было для меня забавно - добыча данных! Перейдите к:

http://usa.ipums.org/usa/

И загрузите свои микроданные (вам нужно будет сделать учетную запись, но ее бесплатно).

Вам нужно написать немного script, чтобы вставить файл фиксированной ширины в ваш db, что само по себе должно быть забавным. И вам нужно будет написать немного script для автоматического создания полей (так как их много), основанных на разборе их метафайла. Это тоже весело.

Затем вы можете начать задавать вопросы. Предположим, что вопросы касаются цен на жилье:

Скажите, что вы хотите взглянуть на эволюцию цен на жилье теми, у кого есть доходы в 10% населения за последние 40 лет. Тогда ограничьте, если они живут в Калифорнии. Посмотрите, существует ли корреляция между доходом и долей ипотечных платежей в процентах от дохода. Затем группируйте это по географической области. Затем посмотрите, существует ли корреляция между этими областями с наибольшей ипотечной нагрузкой и процентом единиц, занятых арендаторами. У вашего db будут встроенные статистические функции, но вы всегда можете запрограммировать свои собственные, так что корреляция может быть эквивалентом fibonnacci. Затем напишите немного script, чтобы сделать то же самое в R, импортируя данные из своего db, манипулируя им и сохраняя результат.

Лучший способ узнать о БД - использовать их для других целей.

Как только вы закончите играть с iPUMS, взгляните на данные GEO, используя (в зависимости от вашей базы данных) что-то вроде PostGis - единственное различие заключается в том, что iPUMS дает вам разрешение по трактам, тогда как данные ГИС имеют широту/долготы. Затем вы можете построить карту тепла ипотечного бремени для США, а также развить эту карту тепла в разные временные масштабы.

Ответ 3

Возможно, вы можете что-то сделать с химией. Введите 118 элементов или извлеките их для онлайн-источника. Используйте основные правила, чтобы объединить их в молекулы, которые можно хранить в базе данных. Объедините молекулы в более крупные молекулы и выполните более сложные запросы.

Ответ 4

Вам будет трудно найти агностические обучающие материалы базы данных. Основная причина этого в том, что стандарт SQL-92, на котором основано большинство примеров, - это простое старое расточение. Существуют обновленные стандарты, но большинство агностических руководств по базе данных будут тупыми до самого низкого общего знаменателя: SQL-92.

Если вы хотите узнать о базах данных в качестве инженера-программиста, я бы определенно рекомендовал начать с Microsoft SQL Server. Для этого есть много причин, некоторые - факты, некоторые - мнения. Основная причина заключается в том, что намного легче получить намного больше от SQL Server.

Что касается выборочных данных, Northwind был заменен AdventureWorks. Вы можете получить последние версии codeplex. Это гораздо более реалистичная база данных и позволяет демонстрировать больше базовых объединений, фильтрации и свертываний. Самое замечательное в том, что он фактически поддерживается для каждой версии SQL Server и обновляется, чтобы продемонстрировать некоторые из новых функций базы данных.

Теперь, для вашей цели # 1, ну, я бы подумал о масштабировании упражнения. После того, как вы перейдете к основному и скучному материалу, вы должны постепенно выполнять эффективные широкомасштабные манипуляции данными и, хотя на самом деле не создавать данные, по крайней мере копировать/вставлять/изменять ваши данные SQL, чтобы взять их в размер, который вы думаете.

Имейте в виду, что базы данных сравнения не являются тривиальными. Производительность и эффективность базы данных зависят от многих аспектов вашего приложения. Как он используется, так же важно, как и его настройка.

Удачи и сообщите нам, если вы найдете жизнеспособное решение вне этого форума.

Ответ 5

Реализуйте свое генеалогическое дерево в одной таблице и распечатайте его. Сам по себе это не очень общая проблема, но подход, безусловно, есть, и он должен оказаться достаточно сложным.

Ответ 6

Географические данные могут демонстрировать множество возможностей SQL, будучи несколько сложными (но не слишком сложными). Он также легко доступен из многих источников онлайн - международных организаций и т.д.

Вы можете создать базу данных со странами, городами, почтовыми индексами и т.д. Отметить столицы стран (помните, что в некоторых странах имеется более одной столицы...). Включите данные ГИС, если вы хотите получить действительно фантазию. Кроме того, рассмотрите, как вы могли бы моделировать различную адресную информацию. Теперь, если адресная информация должна была поддерживать международные адреса? Вы можете сделать то же самое с телефонными номерами. После того, как вы сможете повесить вещи, вы можете даже интегрироваться с Google Maps или что-то подобное.

Вам, вероятно, придется самому создавать дизайн базы данных и импортировать, но на самом деле это довольно большая часть работы с базами данных.

Ответ 7

База данных Eclipse Classic Model является лучшей базой данных с открытым исходным кодом, эквивалентной Factorial и функции Fibonacci. Microsoft Northwind - это еще одна мощная альтернатива, которую вы можете использовать.