How to

Make Your Own Internet Stellar Database

I know I'm not going to be around forever.  And worse, my early passion for the Internet Stellar Database might not be around forever, either.  I'm currently running this out of a web server in my own home, and due to the fact that I can't get DSL it's costing me about US$110 per month.  And, let's face it, the Internet Stellar Database ain't exactly generating the kind of web traffic whereby it can recoup its costs by selling advertising space.  Some day, some kind soul (or kind University or something) will have to take over the I.S.D.B..  This page contains instructions on how to do just that, as well as links to the necessary files.

LEGAL-LOOKING NOTICE:  These files are not in the public domain.  They are the property of their author, Roger M. Wilcox.  These files may not be copied or distributed individually, and may only be used to create another Internet Stellar Database server on somebody else's machine.  Furthermore, any and all such Internet Stellar Database servers must have a conspicuous link back to the original Internet Stellar Database (at, and must give ample credit to their illustrious originator, Roger M. Wilcox, which is the guy that currently reads e-mail directed to  Finally, this legal-looking notice must be displayed on all Internet Stellar Database servers, either in that server's "Make your own Internet Stellar Database" instructions or on its main Internet Stellar Database page.

The Internet Stellar Database is running on a Windows NT server using Microsoft IIS.  Theoretically, you could use something other than Microsoft IIS to provide the web-publishing and CGI-running capabilities needed by the Internet Stellar Database, but you would be in trouble if you used something other than a Windows-based operating system.  The CGI programs, you see, are Windows executables, not Perl scripts.

To create a minimal Internet Stellar Database server, you must run through the following steps:

How to

Customize Your Own Internet Stellar Database

Now that you've created a mirror image of the Internet Stellar Database by following the steps outlined above, you might want to improve upon it.  Improving on the Internet Stellar Database falls into two categories: Improving the CGI programs used to fetch and display stellar data, and improving the data in the database file.

Changing the CGI programs

The CGI programs are written in Microsoft Visual C++ version 6.0.  You must have a Visual C++ 6.0 compiler to compile and link these programs.  All told, there are two workspace files, three project files, eight C++ source files, and one C++ header file, organized into 3 directories which must be kept as "siblings" (i.e. they must all be subdirectories of the same parent directory).

Within the main_page directory, there are three files, which together are used to create the main_page.exe executable.  They are:

Within the find_neighbors directory, there are two files, which are necessary but not sufficient for creating the find_neighbors.exe executable.  They are: Within the search_star directory, there are eight files, which together are used to create the search_star.exe executable and which, taken together with the files in the find_neighbors directory, will also create the find_neighbors.exe executable.  They are: This last file, display_id.cpp, is where most of the meat is.  It pretty much single-handedly fetches all data pertaining to a given star system and spits out the complete HTML page for that system.

Changing the database

The database file, isdb.mdb, is organized around the notion of IDs.  Every star system has a unique ID which is divisible by 100, i.e. a system ID ends in 00.  Each component of a system (each individual star) has an ID equal to the ID for the system it belongs to, plus 1-9.  Each orbit has an ID equal to the ID for the system it belongs to, plus 11-49.  Each planet or brown dwarf companion has an ID equal to the ID for the system it belongs to, plus 51-59.

It was done this way because: (1) a catalog number might belong to a whole system or just a component of a system; (2) a proper name might belong to a whole system or just a component of a system; and (3) either of the two objects involved in an orbit may be a component, a planet, or even another orbit.  By "encoding" the system ID into the ID of every component, orbit, and planet, the ID associated with a catalog number, a proper name, or the primary or secondary object of an orbit could theoretically be any kind of ID (system, orbit, component, or planet) and at the same time a search algorithm could instantly determine whether a particular catalog number or proper name belonged to the system it's interested in.  As an example of how complicated a star system could become under this model and still be handle-able, take a look at Castor.